Как назначить данные из базы данных массиву в контроллере laravel?

#php #laravel #multidimensional-array #foreach #laravel-7

Вопрос:

Я хочу назначить данные из базы данных для хранения их в массиве. Я не получаю никакой ошибки, но только последнее значение сохраняется в массиве.

запрос для получения данных из базы данных

 $categories = Category::where('parent_id', '=', null)-gt;where('created_by', '=', Auth::user()-gt;creatorId())-gt;get();   $category = [];    if(count($categories) gt; 0)  {  foreach ($categories as $category) {    $category[$category-gt;id] = [  'id' =gt; $category-gt;id,  'category_name' =gt; $category-gt;name,  'SubCategory' =gt; $this-gt;getSubcategoryByIdAction($category-gt;id)    ];    }  }      

Ответ №1:

Вы перезаписываете переменную $category в цикле foreach. Попробуйте выполнить следующий код:

 lt;?php  $categories = Category::where('parent_id', '=', null)-gt;where('created_by', '=', Auth::user()-gt;creatorId())-gt;get();  $category = [];   if(count($categories) gt; 0) {  foreach ($categories as $categoryItem) {    $category[$categoryItem-gt;id] = [  'id' =gt; $categoryItem-gt;id,  'category_name' =gt; $categoryItem-gt;name,  'SubCategory' =gt; $this-gt;getSubcategoryByIdAction($categoryItem-gt;id)   ];   } }  var_dump($category);  

Комментарии:

1. Если кто-то еще похож на меня и пропустил это в первый раз: изменение здесь-это имя переменной, которая назначается на каждой итерации foreach

2. да, я понял, спасибо