2014-09-01 30 views
1

藉助Laravel,我創建了一個主表users,其中包含主鍵,電子郵件字段和密碼字段。比我創建了幾個其他表,如physical_details,personal_data,都帶有外鍵user_idLaravel 4 - 獲得通過關係連接的表格的交叉結果

現在我在交叉結果中遇到了問題。例如,查找具有height = 170(物理細節)的用戶,並且與marital_status = married(個人數據)同時查找。我嘗試對wheres進行分組,但它有點複雜,而且更糟糕的是,結果只會帶來主表(用戶)的值

+0

檢查了這一點stackoverflow.com/questions/18599455/eloquent-orm-using-where-in-both-inner-join-tables – Richie 2014-09-01 03:57:39

回答

0

您需要使用Query Builder執行join。你會想可能類似於下面的代碼的東西:

$result = DB::table('users') 
      ->distinct() // We most likely don't want duplicate rows 
      ->join('physical_details', 'users.id', '=', 'physical_details.user_id') 
      ->join('personal_data', 'users.id', '=', 'personal_data.user_id') 
      ->select('users.id', 'physical_details.columnX', 'personal_data.columnY') 
      ->where('personal_data.marital_status', '=', 'married') 
      ->where('physical_details.height', '=', 170) 
      ->get(); 

這裏,$result應與性能idcolumnXcolumnY(選擇任何列包含你正在尋找的信息)對象的數組。

我鏈接到的文檔應該能夠幫助您更多。

0

如果表之間的關係是集合。

$users = User::wherehas('personnal_data',function($q) { 
$q->wheremaritalStatus('Married'); 
})->get(); 

dd($users); 

該工作嗎?

問候,