如何通过关系过滤laravel雄辩的结果?
我有两种型号如何通过关系过滤laravel雄辩的结果?,laravel,eloquent,Laravel,Eloquent,我有两种型号TeamleaderCompany,其中:有许多TeamleaderCompanyTag 团队领导公司 public function teamleaderCompanyTags() { return $this->hasMany('App\TeamleaderCompanyTag'); } 团队领导公司标签 public function teamleaderCompany() { return $this->belongsTo(Teamleader
TeamleaderCompany
,其中:有许多TeamleaderCompanyTag
团队领导公司
public function teamleaderCompanyTags()
{
return $this->hasMany('App\TeamleaderCompanyTag');
}
团队领导公司标签
public function teamleaderCompany()
{
return $this->belongsTo(TeamleaderCompany::class);
}
当我TeamleaderCompany::all()
时,我得到以下结果:
(...)
"teamleader_company_tags": [
{
"id": 7,
"tag": "hot lead",
"teamleader_company_id": 3,
"created_at": "2019-09-03 09:23:51",
"updated_at": "2019-09-03 09:23:51"
},
{
"id": 8,
"tag": "reseller",
"teamleader_company_id": 3,
"created_at": "2019-09-03 09:23:51",
"updated_at": "2019-09-03 09:23:51"
}
]
(...)
我想做的是显示TeamleaderCompany
结果,其中teamleaderCompanyTags
只有一个标签,即“分销商”
(如果除“分销商”外还有其他标签,则不显示)
谢谢尝试以下查询:
TeamleaderCompany::has('teamleaderCompanyTags','=',1)//只有一个标签的公司
->whereHas('teamleaderCompanyTags',function($query){//有'reseller'标签的公司
$query->where('tag','reseller');
})
->得到()
尝试此查询:
TeamleaderCompany::has('teamleaderCompanyTags','=',1)//只有一个标签的公司
->whereHas('teamleaderCompanyTags',function($query){//有'reseller'标签的公司
$query->where('tag','reseller');
})
->得到()
试试这个方法
TeamleaderCompany::with('teamleaderCompanyTags:id,tag')
->whereHas('teamleaderCompanyTags',function(\Illuminate\Database\Eloquent\Builder $query){
$query->where('tag', "reseller");
})->get();
试试这个方法
TeamleaderCompany::with('teamleaderCompanyTags:id,tag')
->whereHas('teamleaderCompanyTags',function(\Illuminate\Database\Eloquent\Builder $query){
$query->where('tag', "reseller");
})->get();
你有两个条件
- 它需要有“经销商”标签
- 这是它唯一的标签
TeamleaderCompany::whereHas('teamleaderCompanyTags',函数($query){
$query->where('tag','reseller');
})
->whereDoesntHave('teamleaderCompanyTags',函数($query){
$query->where('tag','!=','reseller');
})
->得到()
您有两个条件
- 它需要有“经销商”标签
- 这是它唯一的标签
TeamleaderCompany::whereHas('teamleaderCompanyTags',函数($query){
$query->where('tag','reseller');
})
->whereDoesntHave('teamleaderCompanyTags',函数($query){
$query->where('tag','!=','reseller');
})
->得到()
谢谢,但如果有其他标签,则返回“teamleaderCompanyTags”的“经销商”事件。我要找的只是“经销商”而不是其他标签。@MostafaAbdellaoui您是指只有一个标签且该标签是“经销商”的公司,对吗?检查我的更新答案。谢谢,但如果有其他标签,这会返回“teamleaderCompanyTags”的“经销商”事件。我要找的只是“经销商”而不是其他标签。@Mostafaabdelloui你是说只有一个标签的公司,而该标签是“经销商”对吗?检查我的最新答案。