У меня есть цикл внутри цикла в коллекции Laravel, и иногда мне нужно удалить некоторые объекты из второй коллекции цикла. Вот код
public function remove_if_found($id)
{
$all_groups = Group::all();
$all_groups->load('templates');
foreach ($all_groups as $group)
{
foreach ($group->templates as $key => $template)
{
if($template->id = $id)
{
$group->templates->forget($key);
}
}
}
return $all_groups;
}
Проблема в том, что коллекция group-> шаблонов превращается из простого (не связанного) массива в объект. Вот пример того, как выглядит ответ
Я пытаюсь сгладить $ group-> templates-> flatten (), но в окончательном ответе шаблоны по-прежнему как объект, но не как массив.
Этот тест сглаживает работы
...
foreach ($all_groups as $group)
{
foreach ($group->templates as $key => $template)
{
if($template->id = $id)
{
$group->templates->forget($key);
}
}
return $group->templates->flatten()//This code works i get fluttened array
}
Но окончательный вариант все равно возвращает мне объект вместо массива
$all_groups = Group::all();
$all_groups->load('templates');
foreach ($all_groups as $group)
{
foreach ($group->templates as $key => $template)
{
if($template->id = $id)
{
$group->templates->forget($key);
}
}
$group->templates->flatten()//Use flatten here
}
return $all_groups;//Templates are returned not as an array but still as an object (Same variant as on attached image)
}