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的地方”。

谢谢,这正是我需要的编辑花了我一段时间找到这些文档: