Php Laravel-Mysql,其中未加入
我有三个表,即Php Laravel-Mysql,其中未加入,php,mysql,laravel,laravel-5.2,inner-join,Php,Mysql,Laravel,Laravel 5.2,Inner Join,我有三个表,即用户,画廊,订单。结构简单。图库和订单都有一个名为客户id的列,作为用户的外键 我需要一个结果集,其中只包含出现在库中但不在订单中的用户列表。 我尝试了以下内容,但它提供了订单中存在的所有用户 $users = DB::table('galleries') ->join('users', 'users.id', '=', 'galleries.client_id') ->join('orders', 'orders.client_i
用户
,画廊
,订单
。结构简单。图库
和订单
都有一个名为客户id
的列,作为用户的外键
我需要一个结果集,其中只包含出现在库中但不在订单中的用户列表。
我尝试了以下内容,但它提供了订单中存在的所有用户
$users = DB::table('galleries')
->join('users', 'users.id', '=', 'galleries.client_id')
->join('orders', 'orders.client_id', '=', 'users.id')
->select('galleries.client_id', 'galleries.path', 'users.first_name', 'users.last_name', 'orders.order_number')
->where('galleries.session_id', null)
->where('galleries.is_video', '1')
->where('galleries.is_thumb', '0')
->get();
dd($users);
上面代码生成的查询是
select
`galleries`.`client_id`,
`galleries`.`path`,
`users`.`first_name`,
`users`.`last_name`,
users.id,
`orders`.`order_number`
from
`galleries`
inner join
`users`
on
`users`.`id` = `galleries`.`client_id`
inner join
`orders`
on
`orders`.`client_id` = `users`.`id`
where
`galleries`.`session_id` is null
and
`galleries`.`is_video` = '1'
and
`galleries`.`is_thumb` = '0'
这个怎么样?不确定它是否有效:
DB::table('galleries')
->join('users', 'users.id', '=', 'galleries.client_id')
->select('galleries.client_id', 'galleries.path',
'users.first_name', 'users.last_name')
->where('galleries.session_id', null)
->where('galleries.is_video', '1')
->where('galleries.is_thumb', '0')
->whereNotIn('client_id', function($query) {
$query->select('client_id')
->from('orders');
})
->get();
我已经删除了订单。订单号
,因为根据您的要求,您提到了选择那些用户没有订单的画廊。如果客户没有订单,如何加入订单
我只是提供了一个额外的whereNotIn
,内容为“订单表中不存在客户id的地方”。谢谢,这正是我需要的编辑花了我一段时间找到这些文档: