2016-06-18 161 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

非常感谢,但“用户”购买的零件不同的“用户”创建设备,从来没有同一个用户。 –