如何在 Laravel 中的多对多关系中按类别创建过滤器?
我在文章和类别模型之间有多对多,以及包含category_id 和article_id 记录的数据透视表。单击类别链接时,我将看到一个页面,其中显示与单击的类别相关的所有文章,但我无法在控制器中创建正确的功能。
public function showcategory($id){
$articles=Article::whereHas('categories',function($query){
$query->whereIn('category_id', $id);
})->get();
return view('categorydetail',compact('articles);
}
I have a many to many between Article and Category model and a pivot containing category_id and article_id records. At the click on the category link I would have a page that shows me all articles related to the category clicked but i can't create the right function in the controller.
public function showcategory($id){
$articles=Article::whereHas('categories',function($query){
$query->whereIn('category_id', $id);
})->get();
return view('categorydetail',compact('articles);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的代码看起来不太好。 Eloquent
whereIn
期望一个数组作为第二个参数。使用where
代替。理想情况下,这不是最佳实践。您最好尝试以下流程:
Your code seems not fine. Eloquent
whereIn
is expecting an array as second parameter. Usewhere
instead.Ideally, this is not the best practice. You'd better try the flow below:
你的代码是正确的,你只需要传递 id 变量
即可 使用代码传递变量,添加以下代码 use($id)
你应该使用 where 而不是 whereIn
还有另一种方法
Your code is correct, you just need to pass the id variable
The variable is passed using the code by adding the following code use($id)
You should use where instead of whereIn
There is also another way