Как переопределить значение свойства ride в коллекции laravel

#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, но вы уверены, что вам нужно это делать? Проверьте эту песочницу . Поскольку элементы являются объектами, по умолчанию они должны повторяться «по ссылке», по крайней мере, это то, что происходит в этом фрагменте.