大家好,我需要得到所有任务标签名称都在$TagArray
中的任务。我试过使用我的代码,但当任何任务标记都在$TagArray
中时,它会返回任务。
我的代码
$Tasks = Path::with(['pathtags' => function ($q) use ($TagArray) {
$q->with(['Tasks'=>function($q) use ($TagArray) {
$q->has('tasktags', '>' , 1)->whereHas('tasktags', function ($query) use ($TagArray) {
$query->whereIn('name',$TagArray);
})->with('tasktags');
}]);
}])->first();
此查询检查
Task->Tags
中的名称,但问题是当Task->Tags(tasktags)名称之一在$TagArray中时返回任务当所有
$TagArray
(tasktags)名称都在Task->Tags
中时,我需要返回Task。$query->whereIn('name',$TagArray);
最佳答案
我想你最好用有很多通。
public function tags()
{
return $this->hasManyThrough('Path', 'PathTag', 'pathtag_id', 'tag_id');
}
要获取此关系的给定路径的标记,请执行以下操作:
$path= Path::first();
$path->load(['tags' => function ($q) use ($TagArray) {
$q->whereIn('name',$TagArray);
}]);
$path->tags;