首页 > 解决方案 > For循环在laravel控制器中不起作用

问题描述

For Loop Not Working $AllPathsTasgs 有 2 个数组所以 count($AllPathsTasgs) 将返回 2 my 而我返回 2 路径所以它应该首先使用

$x == 0

那么应该使用

$x == 1

但它使用

$x == 1

对于拖车,路径不知道为什么

虽然我用过 dd($x); 它正确返回 $x

任何帮助请

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

$posts3 = Path::with(['ProgrammingField','pathtags' => function ($q) use ($AllPathsTasgs) {
    for ($x = 0; $x < count($AllPathsTasgs); $x++) {
        if ($x == 0) {
            $q->with(['Tasks' => function ($q) use ($AllPathsTasgs, $x) {
                $q->has('tasktags', '=', 2)
                    ->orderBy('id', 'ASC')
                    ->whereDoesntHave('tasktags', function ($query) use ($AllPathsTasgs, $x) {
                        $query->whereNotIn('name', $AllPathsTasgs[0]);
                    })->with('tasktags')->orderBy('id', 'ASC');
            }]);
        }

        if ($x == 1) {
            $q->with(['Tasks' => function ($q) use ($AllPathsTasgs, $x) {
                $q->has('tasktags', '=', 2)
                    ->orderBy('id', 'ASC')
                    ->whereDoesntHave('tasktags', function ($query) use ($AllPathsTasgs, $x) {
                        $query->whereNotIn('name', $AllPathsTasgs[1]);
                    })->with('tasktags')->orderBy('id', 'ASC');
            }]);
        }
    }
}])->whereIn('id',$pathId)->get();

标签: phplaravelloopsfor-loopeloquent

解决方案


把这个写在循环里面,我们就在外面。

foreach ($paths as $path){
                $AllPathsTasgs[]  = $path->pathtags->pluck('name');    
        $posts3 = Path::with(['ProgrammingField','pathtags' => function ($q) use ($AllPathsTasgs) {
                    for ($x = 0; $x < count($AllPathsTasgs); $x++) {
                        if ($x == 0 ){

                    $q->with(['Tasks' => function ($q) use ($AllPathsTasgs,$x)  {

                        $q->has('tasktags', '=', 2)
                    ->orderBy('id', 'ASC')

                    ->whereDoesntHave('tasktags', function ($query) use ($AllPathsTasgs,$x) {
                               $query->whereNotIn('name', $AllPathsTasgs[0]);

                    })->with('tasktags')->orderBy('id', 'ASC');   
                }]);
            }             
            if ($x == 1 ){

                $q->with(['Tasks' => function ($q) use ($AllPathsTasgs,$x)  {

                    $q->has('tasktags', '=', 2)
                ->orderBy('id', 'ASC')

                ->whereDoesntHave('tasktags', function ($query) use ($AllPathsTasgs,$x) {
                           $query->whereNotIn('name', $AllPathsTasgs[1]);


                })->with('tasktags')->orderBy('id', 'ASC');


            }]);
        }

推荐阅读