2009-09-26 66 views

回答

3

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

看看博客演示如何完成此任务。

0

,你可以设置了在MySQL level..by在phpMyAdmin每个桌子底下去关系视图,并提供模型类的内部关系,必要的关系condition..and使用MANY_MANY ..

1

下面的扩展你想要做什么...... Yii Framework - Extension: cadvancedbehavior

一个重要的事情需要注意:在每次更新,扩展清除所有以前的记录,并创建新的。所以当intermediatry表包含外键以外的其他数据时,我不会使用它。

0

这个问题太常见了。

通常具有许多到多个关系的数据组件依次且独立地出现。所以你只需要做一个接一个的动作。

如果您的关系需要依赖更新,您应该在DataBase级别上使用用户SQL triggers。这将确保数据的完整性,并在应用程序的业务逻辑中给出相当好的分离。

CREATE TRIGGER some_trigger 
    AFTER UPDATE ON some_table 
    ... 
END IF; 

类似的方式是在PHP水平一个逻辑模型incapsulate关系数据(并且例如用2-3 AR模型有操纵)和模拟SQL触发器逻辑中它。

+0

触发器对于维护来说是非常可怕的。首先你可能会考虑使用数据库fks和级联...触发器可能是真正的最后一种选择。 – armandomiani

+1

你一定是在开玩笑吧,不是吗?级联的确是触发器!但是你不能在插入时使用它们。此外,MySql的MyIsam引擎不支持FK,例如关于维护,我不知道维护一个数据库过程有什么问题,特别是如果它是一个微不足道的(并且类似于FK级联) –