#php #laravel
#php #laravel
Вопрос:
Привет, я пытаюсь переопределить значение свойства, используя цикл foreach.
Вот что я пытаюсь
$runningLeagues = $this->getLeagueListing('running', $clubIds);
// chanage city
foreach($runningLeagues as $d){
$d->club->city = $d->city;
}
return $runningLeagues;
Но если я просто вернусь из цикла, я получу правильный результат. Итак, приведенный ниже код работает.
foreach($runningLeagues as $d){
$d->club->city = $d->city;
return $d; // it shows the overridden city. It works.
}
У меня есть свойство city как внутри объекта club, так и вне объекта. Я хочу изменить город внутри объекта club на значение свойства outside city.
Он сохраняет значения неизменными. Это не меняется.
Обновить
кажется, он обновляется с последним элементом. Итак, если последний город свойств ‘ss’, он добавит ‘ss’ во все свойства.
Есть идеи, что происходит? Спасибо.
Ответ №1:
Попробуйте это:
Первый. Метод коллекции Laravel each()
:
$runningLeagues->each(function ($d) {
$d->club->city = $d->city;
});
Второе. По индексу коллекции:
foreach($runningLeagues as $k => $d) {
$runningLeagues[$k]->club->city = $d->city;
}
Комментарии:
1. Я не знаком с Laravel, но вы уверены, что вам нужно это делать? Проверьте эту песочницу . Поскольку элементы являются объектами, по умолчанию они должны повторяться «по ссылке», по крайней мере, это то, что происходит в этом фрагменте.