Yii2:为什么在beforeDelete方法中,hasMany是否返回null?

时间:2017-08-19 23:58:51

标签: yii2

我正在尝试删除具有多对多关系的相关数据

我的复杂模型:

/**
 * @return \yii\db\ActiveQuery
 */
public function getComplexDocument()
{
    return $this->hasMany(ComplexDocument::className(), ['complex_id' => 'id']);
}

/**
 * @return \yii\db\ActiveQuery
 */
public function getDocuments()
{
    return $this->hasMany(Documents::className(), ['id' => 'document_id'])
        ->via('complexDocument');
}

beforeDelete我执行以下操作:

public function beforeDelete()
{        
    foreach ($this->documents as $document){
        var_dump($document);
    }
    return parent::beforeDelete();
}

删除不会发生,我检查了所有hasMany连接返回NULL。

在调试中,我看到following

1 个答案:

答案 0 :(得分:0)

我是这样做的:

public function delete()
{
    foreach ($this->documents as $document){
        $document->delete();
    }
    return parent::delete(); // TODO: Change the autogenerated stub
}

一切正常,所有相关文件都被删除了,但对我来说似乎很奇怪。实际上,这应该在beforeDelete()中,但为什么不返回链接,因此不会被删除,所以它应该是,还是缺少框架?