2017-07-11 28 views
5

Tôi muốn viết truy vấn phụ bên trong nơi trong điều kiện và trong truy vấn con là điều kiện, hãy kiểm tra với trường truy vấn chính.Laravel 5.4 truy vấn phụ trong điều kiện ở đâu?

như sau,

$query = DB::table('users'); 
$query->whereNotIn('users.id', function($query) use ($request) { 
      $query->select('award_user.user_id') 
        ->from('award_user') 
        ->where('award_user.user_id', 'users.id') 
        ->where('award_user.award_id', $request->award_id); 
     }); 

Query đang làm việc tốt, nhưng

->where('award_user.user_id', 'users.id') 

dòng này, users.id không lấy từ truy vấn cha mẹ. Nếu tôi nhập số theo cách thủ công, thì số đó hoạt động chính xác.

Điều gì sai với truy vấn của tôi .. bạn có thể đề nghị không.

+0

Không vấn đề với id giải thưởng, nhưng vấn đề với users.id –

+0

bạn nên cố gắng truy vấn của bạn bằng cách thêm '-> toSql()' để có được định dạng sql, và chạy mà bằng tay trong phpMyadmin hoặc Mysql Query Browser! –

Trả lời

1

sử dụng whereRaw hơn where

$query = DB::table('users'); 
$query->whereNotIn('users.id', function($query) use ($request) { 
      $query->select('award_user.user_id') 
        ->from('award_user') 
        ->whereRaw('award_user.user_id', 'users.id') 
        ->whereRaw('award_user.award_id = '.$request->award_id); 
     }); 
+0

hiện tại id người dùng chính đang hoạt động nhưng 'whereRaw' thứ hai không áp dụng –

+1

@NaseehaSahla,' -> whereRaw ('award_user.award_id ='. $ Request-> award_id); 'sử dụng giá trị này làm giá trị' whereRaw' thứ hai. –

+0

trong giây màRaw không phải là lo lắng nhưng nơi làm việc hơn không thay đổi trong lần thứ hai vẫn không làm việc hơn cho tôi biết –

Các vấn đề liên quan