首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >筛选eloquent relationship whereHas不起作用

筛选eloquent relationship whereHas不起作用
EN

Stack Overflow用户
提问于 2021-04-15 23:14:17
回答 1查看 47关注 0票数 0

我有一个表cities和一个与headquarters表的关系

这是City.php中的关系

代码语言:javascript
复制
public function headquarters(){

  return $this->hasMany('App\Headquarter');
        
}

在我的控制器中,我试图让总部位于实体上的城市

代码语言:javascript
复制
$city_headquarters = City::whereHas('headquarters', function($query){

   $query->where('headquarter_type', 'physical');
            
})->get();

我没有收到任何错误,但如果至少有一个物理总部,我甚至会得到那些headquarter_type不是物理总部的总部

是查询正确,还是只能得到实体总部?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-15 23:18:24

您的查询将获取至少有一个总部将headquarter_type设置为physical的所有城市

如果你只想要只有实体总部的城市,那么你应该使用这个:

代码语言:javascript
复制
$city_headquarters = City::whereDoesntHave('headquarters', function($query){

   $query->where('headquarter_type', '<>', 'physical');
            
})->get();

如果您只想急于加载物理总部,则:

代码语言:javascript
复制
$city_headquarters = City::whereHas('headquarters', function($query){

   $query->where('headquarter_type','physical');
            
})->with([
    'headquarters' => function($query){
          $query->where('headquarter_type', 'physical');
      }
])->get();

然后您可以执行以下操作:

代码语言:javascript
复制
foreach($city_headquarters as $city){
   foreach($city->headquarters as $physical_headquarter){
      $physical_headquarter->[...]
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67111139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档