Почему сбрасывается значение объекта? Есть сл. код:$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
153 +1
0
Ответы
1

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

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

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

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

20 Апр в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 727 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир