使用ActiveRecord:link()
方法时,我是否被迫更新" secure"方式:
foreach ($postData['User']['lab'] as $labId) {
$lab = Lab::findOne($labId);
if ($lab instanceof \app\models\Lab) {
$model->link('lab', $lab);
}
}
或者我可以这样做,"懒惰"方式:
foreach ($postData['User']['lab'] as $labId) {
$model->link('lab', Lab::findOne($labId));
}
不关心额外的检查?
link
会失败或传递,如果其null
的Feed(因为调用Lab::findOne($labId)
在某次迭代中找不到给定记录)?
答案 0 :(得分:1)
就我从代码中看到的那样,它会给出错误。
使用via关系或不调用来自$model
的方法,如果Lab::findOne($labId)
是null
,则会收到错误。
if ($relation->via !== null) {
if ($this->getIsNewRecord() || $model->getIsNewRecord()) {
......
else {
$p1 = $model->isPrimaryKey(array_keys($relation->link));
......
正如文件所说:
Note that this method requires that the primary key value is not null.