Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii框架多对多关系_Php_Has And Belongs To Many_Yii_Many To Many - Fatal编程技术网

Php Yii框架多对多关系

Php 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中每个表下的关系视图并提供必要的关系条件..并在模型类内部关系中使用多个..以下

在Yii框架中,保存和更新多对多关系的方法是什么?

除非为两个主表之间的表创建模型,否则您唯一的选择是使用DAO(数据库访问对象)并用它指定SQL


看看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级联)