Есть таблица deal, которая состоит из id, name, connect_deal. Последний столбец содержит id связанной строки этой же таблицы, если он есть. Чтобы удалить значения из connect_deal выполняю следующий код:
$deal = Deal::findOne($id);
$conId = $deal->connectDeal;
$deal->connectDeal = null;
if ($deal->save()) {
$upDeal = Deal::findOne($conId);
$upDeal->connectDeal = null;
$result = $upDeal->save();
if ($result) {
Yii::$app->session->setFlash('success', 'Связь успешно удалена');
return $this->refresh();
}
}
....
В итоге данные удаляются, как мне и нужно, но получается ошибка, дебагер выделяет строку $upDeal->connectDeal = null;
и выводит warning Creating default object from empty value
, при том, что $deal->connectDeal = null
вопросов у программы не вызывает. С чем может быть связана ошибка и как её решить?
Ошибка возникает из-за того, что Вы пытаетесь присвоить свойство connectDeal
несуществующему объекту. Иными словами $upDeal = Deal::findOne($conId);
в определенных ситуациях выдает null. Например, когда связи не было изначально, или связная запись в таблице не существует
Добавьте проверку на 2ой поиск Deal::findOne($conId)
$deal = Deal::findOne($id);
$conId = $deal->connectDeal;
$deal->connectDeal = null;
if ($deal->save() && ($upDeal = Deal::findOne($conId)) !== null) {
$upDeal->connectDeal = null;
$result = $upDeal->save();
if ($result) {
Yii::$app->session->setFlash('success', 'Связь успешно удалена');
return $this->refresh();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Просьба помочь разобраться с простеньким рендером шаблонаДля удобства весь код разместил в одном файле
ЗдравствуйтеМне просто интересно, каким образом google подставляет описания и ключевые слова
Нужно сделать проверку по времени, что бы можно было заходить в админку в указное времяНапример можно было заходить с 09 : 00 : 00 и по 18 : 30 : 00, date("H:i:s");...