2014-09-24 70 views
0

我正在使用Laravel 4.1。用於子查詢的Laravel連接

我試圖從表中獲取記錄的列表,其中用戶標識不存在爲用戶表中的標識。

我想創建一個查詢與它的子選擇。主查詢和子選擇都需要使用非默認連接。

我曾嘗試:

DB::connection('database') 
     ->table('table') 
     ->whereNotIn('userid', function($query) 
     { 
      $query->select('id') 
       ->from('user'); 
     })->get(); 

當我打印出來的SQL和MySQL的工作臺運行它,我得到預期的結果。 但我覺得子選擇是在默認連接上完成的,而不是我嘗試使用的連接。

請幫忙。

+0

兩者都使用相同的對象,所以都使用相同的連接。 – 2014-09-24 15:34:59

+0

@JarekTkaczyk,你是對的 – Votemike 2014-09-25 14:11:11

回答

0

我做了一個測試,它似乎工作正常。如果您的查詢也是$query->select('id')->from('user');將在database連接上運行。

你可以自己測試一下。在from('user')中,您應該放置存在默認連接的表的名稱,並且不存在於database連接中。如果子查詢會使用默認的連接應用程序不應該拋出任何異常,但實際上它確實是因爲這個表不存在於database連接

+0

我曾嘗試以這種方式將連接添加到子查詢中。但我得到的錯誤'調用未定義的方法Illuminate \ Database \ Query \ Builder :: connection()' – Votemike 2014-09-24 15:27:25

+0

@Votemike我已經編輯我的答案 – 2014-09-24 15:28:50

+0

我再看看我的代碼。這是導致問題的另一部分代碼。 – Votemike 2014-09-25 14:10:40