#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. да, я понял, спасибо