Php laravel 5.4如何编写从多表查询中选择

Php laravel 5.4如何编写从多表查询中选择,php,mysql,laravel,laravel-5,laravel-5.4,Php,Mysql,Laravel,Laravel 5,Laravel 5.4,我如何使用laravel 5.4 编写sql查询以从多个表中获取以下查询的数据 select l.party_id,l.container_id,p.party_name from `tbl_container_lease` l, `tbl_partys` p where l.`party_id` = p.`id` and l.`user_id` = 5 现在我用这个 Containerlease::whereHas('getpartys',function($q){}) ->whe

我如何使用laravel 5.4

编写sql查询以从多个表中获取以下查询的数据

select l.party_id,l.container_id,p.party_name from 
`tbl_container_lease` l, `tbl_partys` p 
where l.`party_id` = p.`id` and l.`user_id` = 5
现在我用这个

Containerlease::whereHas('getpartys',function($q){})
->where('user_id','=',$user_id)
->get();
但它变得太混乱,无法使用


是否有更好的方法通过使用model.来使用此查询?

您必须连接表才能执行此操作

Containerlease::join('tbl_partys', 'tbl_partys.id', '=', 'tbl_container_lease.party_id')
    ->where('tbl_container_lease.user_id', 5)
    ->select('tbl_partys.*', 'tbl_container_lease.*');
    ->get();

然而,如果你使用雄辩的语言,更好的方法是建立关系。这里可以找到这方面的文档:

最好是利用laravel关系,因为毕竟你在laravel

确保您有一个派对模型:

php artisan make:model Party
假设一个租约有一方,则在集装箱租约模型中添加:

public function party(){
    return $this->hasOne('App\Party', 'id', 'party_id');
}
然后访问您的模型

ContainerLease::with('party')->where('user_id', '=', 5)->get();
,可以删除函数($q){}