嗨,我的实体之间有以下关系.
User
- id
- other stuff
NeighborhoodFilter
- id
- userId
- neighborhoodId
- isActive
Neighborhood
- id
- other stuff
Run Code Online (Sandbox Code Playgroud)
我想为我的User对象编写一个方法,该方法将返回UserFilter中isActive = 1表示User所属的所有邻域.
我尝试过以下但我不知道在哪里放置约束'isActive = 1'.有任何想法吗?
public function neighborhoods()
{
return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id');
}
Run Code Online (Sandbox Code Playgroud)
如果您在Neighborhood和NeighborhoodFilter之间有一个关系,您可以使用该whereHas功能.
public function neighborhoods()
{
return $this->hasManyThrough('Neighborhood', 'NeighborhoodFilter', 'userId', 'id')->whereHas('neighborhoodFilters', function($q){
$q->where('isActive', 1);
});
}
Run Code Online (Sandbox Code Playgroud)
否则你可以使用belongsToMany关系和wherePivot函数.
public function neighborhoods()
{
return $this->belongsToMany('Neighborhood', 'neighborhood_filters', 'user_id', 'neighbor_id')->wherePivot('isActive', 1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |