ActiveRecord:link()方法会失败或传递不正确的数据吗?

时间:2015-04-30 09:28:39

标签: php activerecord yii yii2

使用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)在某次迭代中找不到给定记录)?

1 个答案:

答案 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.