我要搜索仅具有标签ID号的具有类似标签的帖子
我已经尝试过了
$tags = Tag::find($id);
$post = Post::whereHas('tags', function($q) use ($id){
$q->where('id',$id);})->paginate(5);
return view('tagdetail', compact('tags', 'post'));
但输出为SQLSTATE [23000]:违反完整性约束:1052 where子句中的ID列不明确(23000)。
我已经在互联网上搜索了,仍然不能。
Tag.php
public function post()
{
return $this->belongsToMany('App\Post');
}
Post.php
public function tags()
{
return $this->belongsToMany('App\Tag');
}
控制器
public function detailTag($id)
{
//i know this will get all the post with the tag id, but i want to paginate it too.
$tags = Tag::find($id);
$post = Post::whereHas('tags', function($q) use ($id){
$q->where('id',$id);
})->paginate(5);
return view('tagdetail', compact('tags', 'post'));
}
预期结果:显示所有具有相似标签且分页的帖子。
实际结果:SQLSTATE [23000]:违反完整性约束:1052 where子句不明确的列(id)(23000)
答案 0 :(得分:0)
我本人多次遇到这个问题。只是要您弄清楚要在哪个表中比较posts
或tags
中的ID,因为两个表具有相同的键(id
)。试试这个,我认为它将解决您的问题:
$post = Post::whereHas('tags', function($q) use ($id){
$q->where('tags.id',$id); // ** call out the tags table specifically
})->paginate(5);