我正在尝试删除具有多对多关系的相关数据
我的复杂模型:
/**
* @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。
我是这样做的:
public function delete()
{
foreach ($this->documents as $document){
$document->delete();
}
return parent::delete(); // TODO: Change the autogenerated stub
}
一切正常,所有相关文档都被删除,但对我来说似乎很奇怪。其实这个应该在beforeDelete()里,但是为什么没有返回链接因此没有删除,所以应该是,还是框架的不足?
你的 $this->documents 看起来方向错误!
可以这样赠送:
public $documents;
或
public function rules()
{
return [
[['documents'],]
]
}
删除该字符串。