2016-10-26 2 views
0

세 테이블, 즉 users, galleries, orders이 있습니다. 구조가 간단합니다. 모두 galleriesorders 내가 galleries에 존재하지만 orders에 만 users의 목록이 결과 집합을 필요 client_id라는 이름의 열이 users 에 대한 외래 키 역할을합니다. 나는 다음과 같은 시도했지만 그것은 나에게Laravel - Mysql Where Not In Join

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' 

답변

0

입니다 위의 코드에 의해 생성 orders

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

쿼리에 존재하는 모든 사용자를주는 방법에 대해? 확실하지가 작동하는 경우 : 귀하의 요구 사항에 따라, 당신은 사용자가 주문이없는 화랑을 선택 언급하기 때문에

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

나는 orders.order_number을 제거했습니다. 고객 주문이없는 경우 주문 가입 방법은 무엇입니까?

"주문 테이블에 client_id가없는 위치"로 간단히 추가 whereNotIn을 제공했습니다.

+0

고마워, 그게 내가 필요한거야. – baig772