Kareimovich's avatar

Get Multi Path With Tasks relation instead of 1 path

Hi Everybody This is My Controller it returns Path with tasks where Path is in URL and returns tasks only where Task Tags is in Path Tags

    $path = Path::with('pathtags')->where('id', '=', $Path->id)->first();
    $TagArray = $path->pathtags()->pluck('name')->toArray();

      $Path= Enrollee::
           with('path.ProgrammingField')

         ->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');
           }])

         ->where( 'user_id' , '=' , Auth::user()->id )
         ->where('Path_id', $Path->id) ->get();

Now I tried To get All User Enroller Paths Using

    $user = User::where('id' ,$user->id)->with('paths.pathtags')->first();
    $pathId = $user->paths->pluck('id');
    $paths = Path::with('pathtags')->whereIn('id',  $pathId)->get();


        foreach ($paths as $path){
            $AllPathsTasgs [] = $path->pathtags->pluck('name');
        } 


  $TagArray = $AllPathsTasgs;
        $Paths= Path::with(['ProgrammingField','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', 'DESC');
           }]);
       }])
       ->whereIn('id', $pathId)->get();

but Not Working Any ideas

0 likes
1 reply
Kareimovich's avatar

The problem is Tag array should have tags for each path but she has all paths tags and every path is compared with it What Should I Do?

Please or to participate in this conversation.