php - 需要获取任务标签在 $TagArray 中的任务

标签 php mysql laravel laravel-5

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

相关文章:

php - 如何用 Eloquent 零检索数据

mysql - Laravel Homestead 无法从主机连接到 MySQL

php - 如何使用相同名称的输入类型更新多个 mysql 行

PHP PCRE 模式

php - mysql之间的问题

PHP 和 MySQLi 超时

php - 正确的表单输入卫生

django-models - 为什么 mysql 忽略在这个简单的连接查询中使用的 'obvious' 键?

具有相关查询的 MySql 事务

php - Laravel验证不适用于多字节字符