您好,我的实体之间存在以下关系。
User
- id
- other stuff
NeighborhoodFilter
- id
- userId
- neighborhoodId
- isActive
Neighborhood
- id
- other stuff
我想为我的用户对象编写一个方法,该方法将返回用户所属的所有 Neighborhoods,这些 Neighborhoods 由 NeighborhoodFilter 中的 isActive = 1 指示。
我尝试了以下方法,但我不知道将约束“isActive=1”放在哪里。有什么想法吗?
public function neighborhoods()
{
return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id');
}
最佳答案
如果您在 Neighborhood 和 NeighborhoodFilter 之间有关系,您可以使用 whereHas
函数。
public function neighborhoods()
{
return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id')->whereHas('neighborhoodFilters', function($q){
$q->where('isActive', 1);
});
}
否则,您可以使用 belongsToMany
关系和 wherePivot
函数。
public function neighborhoods()
{
return $this->belongsToMany('Neighborhood', 'neighborhood_filters', 'user_id', 'neighbor_id')->wherePivot('isActive', 1);
}
关于php - Laravel hasManyThrough 对中间模型有约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34884370/