sql - 如何使用 Laravel eloquent 在数据透视表上执行额外的内部连接

标签 sql inner-join laravel pivot-table eloquent

我有四个表:

  • 食物:身份证、姓名
  • 用户:ID、姓名
  • 膳食类型:身份证、姓名
  • food_user:id、food_id、user_id、mealtype_id

  • 食物和用户是多对多的关系
    mealtype 和 food_user 是一对一的关系

    最后,我想要一个具有以下属性的模型实例:
    食物名称、用户名称、膳食类型名称

    正常的 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/queries

    关于sql - 如何使用 Laravel eloquent 在数据透视表上执行额外的内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552481/

    相关文章:

    php - 路由到子文件夹中的 Controller 在 Laravel 4 中不起作用

    sql - 一旦找到足够的行,SQL Server TOP 是否会停止处理?

    sql - 有没有一种方法可以将 float 转换为小数而不进行四舍五入并保持其精度?

    mysql - 仅当该组连接列中存在特定值时,如何在 MySql 中进行组连接

    带有函数调用的 SQL 注入(inject)

    mysql - 如何将同一个表中的两列连接成单列

    mysql:用子查询更新,

    MySQL 内连接 2 个表并按表 1 中的 ID 对表 2 进行计数

    laravel - 使用 Laravel Livewire 和 Laravel Fortify 进行登录

    php - 创建一个查询,该查询将检查数量是否在数量范围之间,并使用 laravel 中的 jquery 从产品 ID 输出一定数量的基础