【问题标题】:Laravel3 Eloquent: Query for attribute in Many-To-Many RelationLaravel3 Eloquent:查询多对多关系中的属性
【发布时间】:2013-05-03 06:36:38
【问题描述】:
这个问题现在让我大吃一惊:
我有以下关系:
Groups --> Intermediate Many-To-Many Table <-- Cities(每个组可以分配多个城市)
现在我想获取所有组模型,其中分配的城市是 id X 和 id Y。
比如说“把所有分配到波士顿和纽约的组给我”
Laravel 3 的 Eloquent 可以做到吗?
非常感谢!
马蒂亚斯
【问题讨论】:
标签:
laravel
laravel-3
eloquent
【解决方案1】:
根据我的经验,where 子句在多对多关系中不起作用。但是,如果您急切地加载它们,它们确实可以工作。
Group::with(array('cities' => function($q) {
$q->or_where('id', '=', X);
$q->or_where('id', '=', Y);
})->get();
【解决方案2】:
在上面扩展 aowie1 的答案(这是正确的),嵌套 or_where 子句通常很有用(因为这在逻辑上是有意义的,特别是如果您希望使用非或-where 条件扩展查询):
Group::with(array('cities' => function($q) {
$q->where(function($where) {
$where->or_where('id', '=', 'x');
$where->or_where('id', '=', 'y');
});
})->get();
再次,只是扩展 aowie1 的答案,我赞成,因为它是正确的 - 这只是一些关于带有 or 条件的嵌套查询的附加信息:)