大家好,我需要得到所有任务标签名称都在$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;

09-25 18:01