search - Laravel通过分页搜索多对多雄辩的结果
问题描述
我有树表:
- 帖子
- 类别
- 标签
帖子字段是:标题和文本类别字段是:标题标签字段是:标题
帖子和类别之间的关系是多对多的。帖子和标签之间的关系是多对多的。
我想在帖子的标题或正文中搜索关键字(喜欢),或者在帖子类别的标题中,或者使用雄辩和分页的帖子标签的标题中。
我该怎么做呢?
class Post extends Model
{
public function categories()
{
return $this->belongsToMany(Category::class);
}
public function tags()
{
return $this->belongsToMany(Tag::class);
}
}
class Category extends Model
{
public function posts()
{
return $this->belongsToMany(Post::class);
}
}
class Tag extends Model
{
public function posts()
{
return $this->belongsToMany(Post::class);
}
}
解决方案
我认为这是最好的查询:
$posts = Post::where('title','LIKE','%'.$keyword.'%')
->orWhereHas('tags', function($query) use ($keyword) {
$query->where('title', $keyword);
})
->orWhereHas('categories', function ($query) use ($keyword) {
$query->where('title', $keyword);
})->orderBy('id', 'DESC')->paginate(10)->appends('keyword', $keyword);
推荐阅读
- php - 在 1 个控制器功能 laravel 中的 2 个模型之间传递数据
- javascript - 如何为不同的id设置切换功能
- julia - @code_warntype 返回类型不稳定性:AbstractArray{T,1}
- groovy - 如何在没有 JAR 的其他包中使用 Groovy 类?
- javascript - 如何使用 Javascript 将数字动态添加到第一个单元格
- c - 输入 1 - 10 的数字时,左旋转在最后一点在 AVL 树中失败
- python - 如何从用户那里获取输入并将它们保存在列表中(Python Kivy)?
- mpi - Openmpi 设置 btl 标志 --mca btl tcp 与 --mca btl_tcp_if_include eth1
- javascript - 在 catch 语句中没有提升?
- php - 为什么表中的插值重复不适用于 symfony 形式?