2016-06-18 138 views
0

我有3個表:Laravel:查詢生成器加入多表

users_tb的列:

user_id (pk) 
user_name 

device_tb的列:

user_id (fk) 
device_id (pk) 
device_name 

part_tb的列:

deive_id (fk) 
part_id (pk) 
part_name 
user_buy (fk) 

關係:

device_tb一對多part_tb

user_tb一對多device_tb(1人可以創造很多(1個設備可以從許多部分創建)設備)

user_tb一對多part_tb(1人可以買很多設備)

我怎麼能算總用於每個用戶的所有設備?

實施例:設備:PC1 - 從創建:鼠標,鍵盤,CPU - 通過用戶:阿倫

結果:用戶阿倫使用份

我很抱歉我的英語:((

回答

0

Y OU可以用下面的查詢

$val = DB::table('users_tb')->select(array("users_tb.user_name", DB::raw('count(part_tb.part_id) as count_part')))->leftJoin('device_tb', 'users_tb.user_id', '=', 'device_tb.user_id')->leftJoin('part_tb', 'device_tb.device_id', '=', 'part_tb.deive_id')->get(); 

這個代碼將幫助您嘗試..

+0

感謝您的幫助。但「用戶」購買的零件不同的「用戶」創建設備,從來沒有同一個用戶。非常感謝你! –

+0

意味着它不適合你的情況? –

+0

是:(它不適用於我的代碼 –

0

你有沒有試過這種

$val = DB::table('users_tb') 
->select("users_tb.user_name") 
->select(DB::raw('count(part_tb.part_id) as count_part')) 
->leftJoin('device_tb', 'users_tb.user_id', '=', 'device_tb.user_id') 
->leftJoin('part_tb', 'users_tb.user_id', '=', 'part_tb.user_buy') 
->groupBy('users_tb.user_id') 
->get(); 

如果可能的話,那麼你可以發送sqlfiffle鏈接。

+0

非常感謝,但「用戶」購買的零件不同的「用戶」創建設備,從來沒有同一個用戶。 –