Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DB::Table与Model::get()上的Laravel或PHP foreach问题_Php_Laravel_Eloquent_Php 7_Laravel 7 - Fatal编程技术网

DB::Table与Model::get()上的Laravel或PHP foreach问题

DB::Table与Model::get()上的Laravel或PHP foreach问题,php,laravel,eloquent,php-7,laravel-7,Php,Laravel,Eloquent,Php 7,Laravel 7,下面的代码可以正常工作: $data = Structures::select("id", "parent_id", "category", "type", "subType", "variant", "description") ->orderBy('category') ->orderBy('type')

下面的代码可以正常工作:

$data = Structures::select("id", "parent_id", "category", "type", "subType", "variant", "description")
        ->orderBy('category')
        ->orderBy('type')
        ->orderBy('subType')
        ->orderBy('variant')
        ->get() ;

        return $this->fillCategories($data) ;
函数的作用是用父子关系填充JSON树

但是,下面的代码不起作用

  $data = DB::table("categories AS t1")
        ->select("t1.id", "t1.name AS category", "t2.id as typeId", "t2.name as type", "t3.id as subTypeId", "t3.name as subType", "t4.id as variantId", "t4.name as variant")
          ->leftJoin("categories AS t2", "t2.parent_id", "=", "t1.id")
          ->leftJoin("categories AS t3", "t3.parent_id", "=", "t2.id")
          ->leftJoin("categories AS t4", "t4.parent_id", "=", "t3.id")
            ->whereNull("t1.parent_id")
              ->orderBy("t1.name")
              ->orderBy("t2.name")
              ->orderBy("t3.name")
              ->orderBy("t4.name")
            ->get() ;

            foreach ($data as $v) {
              Log::info("cat: " . json_encode($v));
            }

        return $this->fillCategories($data) ;
本地日志返回值,但是当
$data
被传递到
fillCategories()
时,函数中的foreach会忽略
$data

fillCategories()


我现在假设将
$data
DB::table
传递到函数,而不是
Facades\App\Model\Structures::get()
在翻译过程中不知怎么地丢失了。

谢谢Faiz,显然
orderBy
是问题所在!(!)如果我将其取出,
fillCategories()
foreach处理数据

$data = DB::table("categories AS t1")
        ->select("t1.id", ...)
          ->leftJoin("categories AS t2", "t2.parent_id", "=", "t1.id")
          ->leftJoin("categories AS t3", "t3.parent_id", "=", "t2.id")
          ->leftJoin("categories AS t4", "t4.parent_id", "=", "t3.id")
            ->whereNull("t1.parent_id")
              ->orderBy("t1.name")
              ->orderBy("t2.name")
              ->orderBy("t3.name")
            ->get() ;

这很有效。也许泰勒·奥特威尔能告诉我为什么

它们是不同的查询,可能其中一个没有返回任何结果谢谢您的评论。这是我最初的想法。它们都返回结果。我查过了。那就没有足够的钱离开这里了。。你将一个集合传递给这个方法,如果它不是空的,那么foreach将运行(迭代它),因此根据你显示的内容,集合必须是空的,才能到达日志语句[2020-10-04 08:13:42]local.INFO:fillCat:data=[{“id”:11,“parent\u id”:null,“category”:“Structure”,“type”:“Lampole”,“subType”:null,“变体”:空,“描述”:“Lampole”},{“id”:13,“parent_id”:11,“category”:“Structure”,“type”:“Lampole”,“subType”:“QB”,“variant”[2020-10-04 08:13:42]local.INFO:fillCat:data=[{“id”:297,“category”:“Buildings”,“typeId”:297,“type”:“CAB”,“Subsubtype”:空,“subType”:空,“variantId”:空,“变体”:空,{“id”:311”,“category”:“Buildings”,“typeId”:“Buildings”,“typeId”:”“:311,“键入”:“Guardokay所以它正在到达……那么问题是什么?”?
$data = DB::table("categories AS t1")
        ->select("t1.id", ...)
          ->leftJoin("categories AS t2", "t2.parent_id", "=", "t1.id")
          ->leftJoin("categories AS t3", "t3.parent_id", "=", "t2.id")
          ->leftJoin("categories AS t4", "t4.parent_id", "=", "t3.id")
            ->whereNull("t1.parent_id")
              ->orderBy("t1.name")
              ->orderBy("t2.name")
              ->orderBy("t3.name")
            ->get() ;