Php Yii框架多对多关系
在Yii框架中,保存和更新多对多关系的方法是什么?除非为两个主表之间的表创建模型,否则您唯一的选择是使用DAO(数据库访问对象)并用它指定SQLPhp Yii框架多对多关系,php,has-and-belongs-to-many,yii,many-to-many,Php,Has And Belongs To Many,Yii,Many To Many,在Yii框架中,保存和更新多对多关系的方法是什么?除非为两个主表之间的表创建模型,否则您唯一的选择是使用DAO(数据库访问对象)并用它指定SQL 看看blog demo是如何完成此任务的。使用MANY\u MANY关系类型来设置模型之间的多对多连接(需要关联表将多对多关系分解为一对多关系) 现在您可以使用活动记录的所有关系函数 作为行为,有一个更好的实现 您可以在mysql级别进行设置..通过转到phpmyadmin中每个表下的关系视图并提供必要的关系条件..并在模型类内部关系中使用多个..以下
看看blog demo是如何完成此任务的。使用
MANY\u MANY
关系类型来设置模型之间的多对多连接(需要关联表将多对多关系分解为一对多关系)
现在您可以使用活动记录的所有关系函数
作为行为,有一个更好的实现
您可以在mysql级别进行设置..通过转到phpmyadmin中每个表下的关系视图并提供必要的关系条件..并在模型类内部关系中使用多个..以下扩展满足您的需要。。。
需要注意的一点是:每次更新时,扩展都会清除所有以前的记录并创建新记录。因此,当中间表包含外键以外的额外数据时,我不会使用它。这个问题太常见了 通常,具有多对多关系的数据组件按顺序独立出现。所以你只需要一个接一个的插入动作 如果您的关系需要依赖更新,则应在数据库级别上更新用户。这将确保数据的完整性,并在应用程序的业务逻辑中提供相当好的分离
CREATE TRIGGER some_trigger
AFTER UPDATE ON some_table
...
END IF;
类似的方法是在PHP级别将关系数据封装到一个逻辑模型中(例如,使用2-3个AR模型进行操作),并在其中模拟SQL触发器逻辑。触发器对于维护来说非常糟糕。首先,您可以考虑使用数据库FKS和级联…触发器可能是最后的选择。你一定是在开玩笑吧?FKs级联确实是触发器!但不能在“插入时”使用它们。此外,MySql的MyIsam引擎不支持FKs,例如,关于维护,我不知道维护DB过程有什么问题,特别是如果它是一个微不足道的过程(类似于FK级联)