有一个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;
并显示警告Creating default object from empty value
,尽管$deal->connectDeal = null
程序没有提出任何问题。什么可能导致错误以及如何解决?
发生错误是因为您试图将属性分配给不
connectDeal
存在的对象。换句话说$upDeal = Deal::findOne($conId);
,它在某些情况下返回 null。例如,最初没有连接,或者表中不存在相关记录时添加检查以进行第二次搜索
Deal::findOne($conId)