Laravel Eloquent ORM查询关系内的关系

时间:2018-03-01 02:45:02

标签: php mysql laravel laravel-5 eloquent

好吧,我还在使用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

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

  • 属性 - App\Property
  • property_environments - App\PropertyEnvironment
  • 环境 - App\Environments

tables

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

所以我对此表示感谢。

1 个答案:

答案 0 :(得分:1)

如果您还没有这样做,请创建多对多关系。然后你可以按照

的方式做点什么
Property::whereHas('environment', function($query) {
        $query->where('name', 'Rooms')
              ->where('value', 2);
    })
    ->get();