Php laravel分页不适用于搜索
我的控制器中有这个代码Php laravel分页不适用于搜索,php,mysql,laravel,Php,Mysql,Laravel,我的控制器中有这个代码 if (request('tag')) { $Posts = Tags::where('name' ,request('tag'))->firstOrFail()->Posts; } else { $Posts = Blog::paginate(10); } return view('Panel.Posts',['Posts' => $Posts]);
if (request('tag')) {
$Posts = Tags::where('name' ,request('tag'))->firstOrFail()->Posts;
} else {
$Posts = Blog::paginate(10);
}
return view('Panel.Posts',['Posts' => $Posts]);
这是我的模型函数
public function tag(){
return $this->belongsToMany(Tags::class,'Post_tag','Post_id');
}
这是我正在创建的一个web应用程序,也是一个博客。
我正在尝试创建一个类别。
我想为我的搜索方法分页,但我做不到。
如果我使用paginate方法,它会说在paginate中找不到posts关系。
我试过这个:
$Posts=Tags::where('name',request('tag'))->firstOrFail()->paginate(10)->Posts代码>
还有这个
$Posts=Tags::where('name',request('tag')->firstOrFail()->Posts->paginate(10)代码>
有人能帮我解决这个问题吗?确保标签在模型中有关系。也可以使用->帖子->帖子,但无论如何:
如果定义了或没有定义关系,则使用单独的查询是没有意义的。相反,你需要结合时间和地点
$posts = Blog::when(request('tag'), function ($q, $tagName) {
return $q->whereHas('tag', function ($q) use ($tagName) {
return $q->where('name', $tagName);
});
})->paginate(10);
当填充时,如果条件匹配,则应用其中的内容。所以它只是“如果”的替代品。文件
WhereHas将检查关系模型是否存在,并允许您对该关系使用“where”(或其他查询)。文件
如果你还想用“如果”而不是“什么时候”:
试试我的代码
$Posts = Blog::whereHas('tag', function (Builder $query) {
$query->where('name', request('tag'));
})->paginate(25);
您可以在模型中的何处使用ha和查询生成器实例化关系。为什么在if-else
语句中尝试从不同的表中获取行?看起来您需要在Blog
模型上使用whereHas
方法。类似这样的内容:Blog::whereHas('tags',function(Builder$query){$query->where('name',$request->get('tag');})->get()代码>在这里查看更多:@OlegNurutdinov它的真命天子。谢谢你不客气:)
$Posts = Blog::whereHas('tag', function (Builder $query) {
$query->where('name', request('tag'));
})->paginate(25);