Цикл foreach уничтожает массив в Laravel / PHP 7 - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть простой элемент CRUD, который называется Filters.Здесь каждому фильтру присваивается категория с внешним ключом.Я пытаюсь выполнить цикл по каждому ключу foregin, чтобы получить имя категории, а не id для отображения пользователю.

Сначала я получаю все фильтры и выполняю команду die / dump, чтобы проверить, все ли там результаты иони есть.

При попытке присвоить имя категории правильному элементу массива я получаю эту ошибку:

"Косвенное изменение перегруженного элемента App \ Filter не имеет никакого эффекта"

Итак, чтобы проверить, что происходит, я умираю / сбрасываю внутри цикла foreach, и те же самые данные теперь исчезли.Даже если я просто вставлю цикл foreach без изменения исходного массива, когда я передам его обратно в представление, оно было неустановленным.

Я очень наивен и не понимаю, что этот цикл foreach делает этоуничтожает эти данные ???

Я скопировал код ниже и прокомментировал, где работает и не работает дд;

public function show()
{   
    $filter = [];
    $filter['filters'] = Filter::all();

    //dd($filter['filters']); --this works fine here
    foreach($filter['filters'] AS $key => $filter){
    //dd($filter['filters']); --this returns null here
        $category = Category::where('id', $filter->category)->first();
        $filter['filters'][$key]->category = $category->category;
    }

    return view('admin.crud.filters.index')->with('filter', $filter);
}

1 Ответ

0 голосов
/ 16 сентября 2018

Не переинициализировать переменную или другой тип данных с тем же именем

Попробуйте заменить фильтр $ на что-то еще в цикле foreach. Потому что у вас уже есть массив с таким именем.

Сделайте что-то вроде:

foreach($filter['filters'] AS $key => $f){...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...