Почему сбрасывается значение объекта? Есть сл. код:$adverts = DB::select('id', 'rate')
->from(ORM::factory('Advert')->table_name())
->as_object('Advert')->execute();
foreach ($adverts as $advert){
$advert->rate = rand(0,10);
var_dump($advert->rate);
}
foreach ($adverts as $advert)
var_dump($advert->rate);
В результате:float(5)
NULL
Почему так? Т.е. почему теряется значение $advert->rate ?

21 Авг 2019 в 07:04
179 +1
0
Ответы
1

В данном коде значение объекта $advert->rate сбрасывается после первого цикла foreach из-за того, что используется метод execute() после вызова DB::select().

Метод execute() выполняет запрос к базе данных и возвращает результат в виде массива объектов. После этого уже происходит проход по каждому объекту в цикле foreach.

После выполнения первого цикла, при попытке пройти по объектам второй раз, уже выполнен запрос к базе данных и значения объектов $adverts уже не содержат изменений, внесенных в первом цикле.

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

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир