当前位置: 首页 > 面试题库 >

如何使用laravel雄辩地在数据透视表上执行其他内部联接

后安民
2023-03-14
问题内容

我有四个表:

  • foods: id, name
  • users: id, name
  • mealtypes: id, name
  • food_user: id, food_id, user_id, mealtype_id

食物和使用者之间存在多对多关系膳食类型与food_user一对一关系

最后,我希望有一个具有以下属性的模型实例: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

谢谢你的帮助!


问题答案:

假设您有一个名为Food的模型,则可以使用Eloquent和Query Builder进行类似的操作:

$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/queries



 类似资料:
  • 我正在使用Laravel5.1进行CMS开发。我有一个简单的帖子结构,用户和用户都可以喜欢帖子。 帖子和用户有多对多关系,并使用数据透视表来表示关系。 职位模型有 用户模型有 我想列出用户的最新活动。例如。 Username1喜欢Post2 Username5喜欢Post9 用户名30喜欢Post25 我知道我必须像这样编写sql查询- 上面的查询工作正常,但有没有办法使用laravel雄辩?

  • 我有三个数据库表,分别称为user(id,name)、group(id,name)和user_group(user_id,group_id,valid_before),它们之间有多对多的关系。 用户可以是某个组的成员,直到时间时刻'valid_before'。如果valid_before小于当前时间,则必须将用户从组中排除,并且必须删除数据透视表中的相应行。我如何在透视表行中选择strtotime

  • 我有这种多对多的关系Laravel雄辩的关系模型是: 我可以在控制器中执行此操作: 在这里,我只通过直接枢轴关系获得email_subtype_id,但必须做额外的工作来获得相关的电子邮件子类型名称。 我需要获得电子邮件子类型名称[直接]从第三个模型电子邮件子类型关系oneTo很多[有很多和属性到]涉及到枢轴模型与电子邮件子类型模型使用类似的东西: 请帮忙!

  • 我有一个问题,正在寻找一个很好的解决方案。 我有这些db表: 游戏对象 游戏对象属性 游戏\对象\游戏\对象\属性(轴) 游戏对象。php: GameObjectAttribute.php: 现在,我试图获得所有GameObjectType的GameObject,并用透视列值过滤结果。 我在这里使用了一个连接,但是有没有办法用雄辩的关系来做呢? 这将返回给我所有“军队”类型的游戏对象: “game

  • 我正在尝试保存数据透视表中多列的数据。但是,数据没有保存。下面是我正在做的事情: 表 刀片 如果我只使用checkbox来同步benefit_id和user_id,它就能工作。但如果添加额外的数据amount1和amount2,则不起作用。 控制器 事先谢谢你的帮助。

  • 雄辩的关系如下: 商店属于许多商店时代(属于许多) 数据透视表(store\u day\u time\u stores)有一个名为“user\u id”的键,storedaytimes表有一个名为“date”的字段。 我想根据给定的“用户id(来自数据透视表)”和“开始”和“结束”日期(来自storedaytime表)过滤“storedaytimes”中的记录。 我现在的问题是 它产生了一个看起来