我正在谷歌搜索并尝试表单nxt两天,它尝试对其进行调试,因此从表中获取数据ID的代码是:
$term=category::get(['id']);
Run Code Online (Sandbox Code Playgroud)
使用该$ varibale按id作为外键从数据库获取数据,其代码如下:-
$categories = HelpCenter::whereHas('category', function($category) use ($term)
{
$category->where('category_id','=',$category);
})
->take(5)->get();
Run Code Online (Sandbox Code Playgroud)
这行代码没有意义:
$category->where('category_id','=',$category);
Run Code Online (Sandbox Code Playgroud)
$category 是一个Eloquent Builder实例,因此您有效执行的操作是:
EloquentBuilder->where('category_id', '=', EloquentBuilder);
Run Code Online (Sandbox Code Playgroud)
我假设第二个$category变量是$term这样的:
$category->where('category_id','=',$term);
Run Code Online (Sandbox Code Playgroud)
但这仍然会引起一些问题,我将在后面进行解释。不过,首先,我认为您应该重命名变量,以使其更直观。而不是$category命名,$query这样就不会混淆。
$categories = HelpCenter::whereHas('category', function($query) use ($term)
{
$query->where('category_id', '=', $term);
})
->take(5)->get();
Run Code Online (Sandbox Code Playgroud)
接下来,我们需要解决更多问题。
$term从未使用过该变量。我假设它应该是类别ID的数组。$term是您想要传递给该where方法的内容。为了解决#1问题,您目前正在获得类别实例的集合。实际上,您可以获得数据库中的每个类别。我不确定这是否是您的意图,但是无论哪种方式,您可能仍然想要一个类别ID数组。如@smartrahat所建议,请使用该pluck方法。
$term = category::get(['id'])->pluck('id');
Run Code Online (Sandbox Code Playgroud)
为了解决#2,您想找到与您传递的ID相匹配的所有类别。您可以使用该whereIn方法。
$query->whereIn('category_id', $term);
Run Code Online (Sandbox Code Playgroud)
总之,它应该看起来像这样:
$term=category::get(['id'])->pluck('id');
$categories = HelpCenter::whereHas('category', function($query) use ($term)
{
$query->whereIn('category_id', $term);
})
->take(5)->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38439 次 |
| 最近记录: |