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

问题描述 投票:0回答:2

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

我的复杂模型:

/**
 * @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

yii2
2个回答
0
投票

我是这样做的:

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

一切正常,所有相关文档都被删除,但对我来说似乎很奇怪。其实这个应该在beforeDelete()里,但是为什么没有返回链接因此没有删除,所以应该是,还是框架的不足?


0
投票

你的 $this->documents 看起来方向错误!

可以这样赠送:

public $documents;

public function rules()
    {
        return [
            [['documents'],]
    ]
}

删除该字符串。

© www.soinside.com 2019 - 2024. All rights reserved.