laravel 5.4如何从多表查询中选择select

时间:2017-07-07 13:31:24

标签: 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){})
->where('user_id','=',$user_id)
->get();

但是使用

太混乱了

使用模型是否有更好的替代方法来使用此查询。

2 个答案:

答案 0 :(得分:3)

您必须加入表格才能执行此操作。

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();

然而,如果您使用Eloquent,更好的方法是创建关系。可以在此处找到相关文档:https://laravel.com/docs/5.4/eloquent-relationships

答案 1 :(得分:0)

最好是因为你完全在拉拉维拉斯,以利用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();