大家好,我需要获取所有任务标签名称都在 $TagArray
中的任务。我尝试使用我的代码,但当任何任务标签位于 $TagArray
中时,它会返回 Tasks。
我的代码
$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
名称在 $TagArray
但问题是当 Task->Tags(tasktags) 名称之一在 $ 中时它返回任务标记数组
当所有 Task->Tags
(tasktags) 名称都在 $tasktags
中时,我需要返回 Task。
$query->whereIn('name',$TagArray);
最佳答案
我认为您最好使用 Has Many Through。
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;
关于php - 需要获取任务标签在 $TagArray 中的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52918026/