и выдергиваем ID текущего пользователя
$id_zayavka = $zayavka_db->id_meropriyatie; //Обращаемся к заявкам и выдергиваем поле id_meropriyatie
$zayavka = Meropriyatia::find()->where(['id' => $id_zayavka])->one(); //обращаемся в заявкам где ID равен текущей заявке $zayavka->updateCounters(['number' => -1]); //обновляем на одну позицию ниже
Почему не работает аналогичный код уже с другой таблицей?
Администратор удаляет заявку пользователя и соответственно происходит понижение позиции.
Я думаю, из-за того, что все происходит в public function actionDelete($id) но тогда бы и 1 код не работал...
$customer_db = User::findOne($id); // Берем из таблицы USER, текущее значение пользователя.
$id_customer = $customer_db->id; //Обращаемся к заявкам и выдергиваем id_meropriyatie
$customer = User::find()->where(['id' => $id_customer])->one(); //обращаемся в заявкам где ID равен текущей заявке
$customer->updateCounters(['zayavki_spisok' => -1]); //Уменьшаем на одну позицию в поле zayavki_spisok таблицы USER
Потому что в первом блоке вроде все логично - берем заявку по ее id, извлекаем из заявки id мероприятия, в мероприятиях ищем мероприятие по его id. Хоть и переменные вперемешку названы, но работать должно. Во втором блоке вы извекаете пользователя по его id. Берете id пользователя и снова извлекаете пользователя по его id, а потом обновляете какие-то счетчики (хотя что делает функция updateCounters мы не знаем. Может удаляет пользователей, например.
Есть код рабочий... видимо нет)
https://yiiframework.com.ua/ru/doc/guide/2/db-active-record/#updating-counters
Обсуждают сегодня