根据多标签中的id对任务进行排序



我需要按id对我的任务进行排序,当所有任务都来自一个标签时,它可以正常工作,但当有多个标签时我会得到类似于my Controller 下的结果

我的控制器:

$Task = Enrollee::
->with(['path.pathtags' => function ($q) use ($TagArray)
{
  $q->with(['Tasks' => function ($q) use ($TagArray)
  {
    $q->has('tasktags', '=', 2)
      ->orderBy('id', 'asc')
      ->whereDoesntHave(
        'tasktags',
        function ($query) use ($TagArray) {
          $query->whereNotIn('name', $TagArray);
        }
      )
      ->with('tasktags')->orderBy('id', 'asc');
   }]
   )->orderBy('id', 'desc');
}])

所以我的输出就像

Tag : Art                    
Post id : 8                     
Post Name : Post About art..               
................. 
Tag : fun           
Post id : 9                              
Post Name : Post About fun..
...................              
Tag : Food               
Post id : 11                         
Post Name : Post About food.. 

所以我需要通过id 正确获取它们

11                 
9               
8  

您对数据进行了多次排序。我假设,如果您有不同的标签,那么任务首先是按照标签id升序排列的。然后按照任务ID的降序对其进行排序。试着添加更多共享相同标签的任务,看看我的意思。

$Task = Enrollee
->with(['path.pathtags' => function ($q) use ($TagArray)
{
  $q->with(['Tasks' => function ($q) use ($TagArray)
  {
    $q->has('tasktags', '=', 2)
      ->orderBy('id', 'asc')
      ->whereDoesntHave(
        'tasktags',
        function ($query) use ($TagArray) {
          $query->whereNotIn('name', $TagArray);
        }
      )
      ->with('tasktags')->orderBy('id', 'asc');
   }]
   )->orderBy('id', 'desc');
}])

最新更新