【问题标题】:How to get values from an array in Laravel如何从 Laravel 中的数组中获取值
【发布时间】:2019-06-22 09:32:18
【问题描述】:

我有一个 3 级类别。我需要获得 3 级类别的业务。

我写了这段代码:

$main_cat = Category::where(['slug' => $url])->first();
$lev_cat2 = Category::where(['parent_id' => $main_cat->id, 'status' => '1'])->get();
 foreach ($lev_cat2 as $subCategory) {
            $cat_ids_lv2[] = $subCategory->id . ',';
        }
 foreach ($lev_cat2 as $subCat) {
            $lev_cat3[] = Category::where(['parent_id' => $subCat->id, 'status' => '1'])->pluck('id')->toArray();
        }

dd($lev_cat3);

然后我得到了这个正确的数组:

array:5 [▼
  0 => array:3 [▼
    0 => 145
    1 => 146
    2 => 147
  ]
  1 => array:3 [▼
    0 => 148
    1 => 149
    2 => 150
  ]
  2 => array:3 [▼
    0 => 151
    1 => 152
    2 => 153
  ]
  3 => array:3 [▼
    0 => 154
    1 => 155
    2 => 156
  ]
  4 => []
]

现在我不知道如何获得像 145,146,147,148,149,... 这样的值来将主题传递给

Business::where(['category_id'=> [145,146,147,148,...]]->get();

当然是动态的。

【问题讨论】:

    标签: php arrays laravel


    【解决方案1】:

    你可以使用 laravel 收集助手:

    Business::whereIn('category_id', collect($lev_cat3)->flatten()->all())->get();
    

    【讨论】:

      【解决方案2】:

      从 PHP 5.5.0 开始,有一个内置函数 array_column 正是这样做的。

      您可以使用它来将数组的php数组转换为单个数组,然后像这样使用它

      $category_ids = array_column($lev_cat3);
      
      Business::where(['category_id'=> $category_ids]]->get();
      

      【讨论】:

        猜你喜欢
        • 2018-08-09
        • 2019-10-23
        • 1970-01-01
        • 2018-06-23
        • 2017-04-15
        • 2018-10-07
        • 1970-01-01
        • 2021-12-12
        • 1970-01-01
        相关资源
        最近更新 更多