文档中有一句话不太理解

指南中有一句话:“从1.0.1版往后,使用关联AR不再依赖数据库中的外键约束定义。”,既然不依赖外键,那么为何在覆盖relations()时要明确指出ForeignKey参数?

不依赖外键定义的意思是你的数据库里不需要定义外键关联了。

但是在relations里,你还是需要指定外键是什么的(即便它们在数据库里没有定义),不然,Yii没法得知relation是怎么关联的。

如果当数据库中已经定制外键关联的时候, 这个优先级是不是要高于relations() 方法中的设定?

对.

如果数据库中没有定制外键关联,删除时,Yii会不会自动删除中间表的数据,又或者会不会自动删除hasOne里的数据呢?

谢谢

和其他框架不一样的是:不管有没有定义外键,Yii是不会自动删除或更新关联对象的。你需要通过写afterSave/afterDelete,或定义数据库update/delete规则来实现这个。