如何使用laravel雄辩地在数据透视表上执行其他内部联接 [英] how to perform additional inner join on pivot table with laravel eloquent
本文介绍了如何使用laravel雄辩地在数据透视表上执行其他内部联接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有四个表:
- 食物:id,名称
- 用户:id,名称
- 膳食类型:身份证,姓名
- food_user:ID,food_id,user_id,meattype_id
最后,我想拥有一个具有以下属性的模型实例: food.name,users.name,meattype.name
正常的sql是:
SELECT f.name, u.name, m.name FROM foods f
INNER JOIN food_user fu ON f.id = fu.food_id
INNER JOIN users u ON fu.id = u.id
INNER JOIN mealtypes m ON fu.mealtype_id = m.id
感谢您的帮助!
解决方案
您可以使用Eloquent和Query Builder做类似的事情,假设您有一个名为Food的模型:
$foods = Food::join('food_user', 'foods.id', '=', 'food_user.food_id')
->join('users', 'food_user.user_id', '=', 'users.id')
->join('mealtypes', 'food_user. mealtype_id', '=', 'mealtypes.id')
->get();
也有关于查询生成器的良好文档: http://www.laravel.com/docs/查询
I have four tables:
- foods: id, name
- users: id, name
- mealtypes: id, name
- food_user: id, food_id, user_id, mealtype_id
foods and user have a many-to-many relationship mealtype has a one-to-one relationship with food_user
In the end I would like to have an instance of a model with the following properties: food.name, users.name, mealtype.name
normal sql would be:
SELECT f.name, u.name, m.name FROM foods f
INNER JOIN food_user fu ON f.id = fu.food_id
INNER JOIN users u ON fu.id = u.id
INNER JOIN mealtypes m ON fu.mealtype_id = m.id
Thanks for any help!
解决方案
You could do something like this with Eloquent and Query Builder, assuming you have a model named Food:
$foods = Food::join('food_user', 'foods.id', '=', 'food_user.food_id')
->join('users', 'food_user.user_id', '=', 'users.id')
->join('mealtypes', 'food_user. mealtype_id', '=', 'mealtypes.id')
->get();
There's a good documentation about the query builder too: http://www.laravel.com/docs/queries
这篇关于如何使用laravel雄辩地在数据透视表上执行其他内部联接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文