Laravel Eloquent ORM查询关系里面的关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel Eloquent ORM查询关系里面的关系相关的知识,希望对你有一定的参考价值。

好吧,我仍在使用Eloquent ORM,并且无法想到一个“快速”的解决方案:现在我想我需要重新创建以下mysql查询:

SELECT *
FROM properties
LEFT JOIN property_environments ON property_environments.property_id = properties.id
LEFT JOIN environments ON property_environments.environment_id = environments.id
WHERE environments.name = "Rooms"
AND property_environments.value = 2

我应该说所有表都有所需的外键,其中:

  • 物业 - AppProperty
  • property_environments - AppPropertyEnvironment
  • 环境 - AppEnvironments

tables

因此,我想选择所有具有名称为“Rooms”且其值为2的环境的属性。

所以我对此有任何意见。

答案

如果您还没有这样做,请创建多对多关系。然后你可以做一些事情

Property::whereHas('environment', function($query) {
        $query->where('name', 'Rooms')
              ->where('value', 2);
    })
    ->get();

以上是关于Laravel Eloquent ORM查询关系里面的关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent ORM - 选择所有两个关系都不存在的模型时,生成的 SQL 和查询构建器结果不匹配

Laravel5.6 Eloquent ORM 关联关系,一对一和一对多

Laravel系列4.3模型Eloquent ORM的使用

Laravel Eloquent ORM 关系命名约定

使用 sum 与关系 Laravel Eloquent ORM

Laravel Eloquent ORM 无法正确返回模型的关系