如何使用 Laravel 5 从相关表中查询具有条件的表
Posted
技术标签:
【中文标题】如何使用 Laravel 5 从相关表中查询具有条件的表【英文标题】:How do I query a table with conditions from related table with Laravel 5 【发布时间】:2015-07-25 20:35:12 【问题描述】:我有两张桌子,
表用户: 身份证、姓名等
表视频: id、user_id 等
型号:视频
public function user()
return $this->belongsTo('App\Models\User');
我想选择用户“Max”拥有的所有视频。
我已经尝试过以下方法:
$Videos = \App\Models\Video::with('user')->where('user.name','=','Max')->get();
Unknown column 'user.name' in 'where clause' (SQL: select * from `videos` where `videos`.`deleted_at` is null and `user`.`name` = Max)
谢谢!
【问题讨论】:
【参考方案1】:这就是whereHas
的用途:
$Videos = \App\Models\Video::with('user')->whereHas('user', function($q)
$q->where('name','=','Max');
)->get();
【讨论】:
has() 和 whereHas() 的问题在于它使用子查询进行全表扫描。你最好手动加入。 @asdasd 这确实是我在一张有 10000 个原始数据的桌子上执行此操作时遇到的问题。它会挂在大桌子上以上是关于如何使用 Laravel 5 从相关表中查询具有条件的表的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.3 查询从通过外键连接的 4 个表中获取结果