我有一个表cities和一个与headquarters表的关系
这是City.php中的关系
public function headquarters(){
return $this->hasMany('App\Headquarter');
}在我的控制器中,我试图让总部位于实体上的城市
$city_headquarters = City::whereHas('headquarters', function($query){
$query->where('headquarter_type', 'physical');
})->get();我没有收到任何错误,但如果至少有一个物理总部,我甚至会得到那些headquarter_type不是物理总部的总部
是查询正确,还是只能得到实体总部?
发布于 2021-04-15 23:18:24
您的查询将获取至少有一个总部将headquarter_type设置为physical的所有城市
如果你只想要只有实体总部的城市,那么你应该使用这个:
$city_headquarters = City::whereDoesntHave('headquarters', function($query){
$query->where('headquarter_type', '<>', 'physical');
})->get();如果您只想急于加载物理总部,则:
$city_headquarters = City::whereHas('headquarters', function($query){
$query->where('headquarter_type','physical');
})->with([
'headquarters' => function($query){
$query->where('headquarter_type', 'physical');
}
])->get();然后您可以执行以下操作:
foreach($city_headquarters as $city){
foreach($city->headquarters as $physical_headquarter){
$physical_headquarter->[...]
}
}https://stackoverflow.com/questions/67111139
复制相似问题