关联表 A 和 B 如何模糊查询 B 表中指定的字段

如何查询B表中比如有个content字段 ,模糊 like B中的某个值

如 文章表A Article

id   title   content   user_id

用户表 B User

id   name

模型

public function  user(){
    return $this->belongsTo(User::class);
}

伪代码

Article::with(['user'])
 //想通过 文章作者的名字 模糊查询  比如 姓李的所有的文章
 //伪代码
//->where('user.name', 'like','%'.$name.'%');
->orderBy('created_at','desc')
->paginate(15);

请问怎么实现呢?

还想通过作者的的创建时间进行排序

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4
Epona
Article::query()
->whereHas('user' => function($query) {
    return $query->where('name', 'like', '%李%');
})->orderBy('created_at','desc')
->paginate(15);
5年前 评论
Epona (作者) 5年前
liuhaiqiang999 (楼主) 5年前
Epona (作者) 5年前

作者的创建时间是user表的created_at

Article::with('user')->get()->sortBy('user.created_at');

先查询在排序,如果要用sql实现的话,就要用关联查询了,但是我觉的数据不大的情况下,这样子简便一点
降序用 sortByDesc 方法

5年前 评论
UpGod 5年前
ppiian (作者) 5年前
User::query()->with('article')->where('name', 'like', '%李%')->orderBy('user.create_at')->get();
5年前 评论
ppiian 5年前
Article::when(request('name',''),function($query,$name){
   $query->whereHas('user' => function($query)use($name) {
        $query->where('name', 'like',$name);
   })
})
->orderBy('created_at','desc')
->paginate(15);
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!