2009-09-26 36 views

Respuesta

3

A menos que se crea un modelo para la mesa entre las dos tablas principales, su única opción es utilizar DAO (Database Access Object) y especificar LSQ con él.

Tener un vistazo a la forma de demostración del blog a cabo esta tarea.

0

que podría poner esto en marcha en level..by MySQL va a vista relacional en cada mesa en phpmyadmin y proporcionar necesario el uso condition..and relacional MANY_MANY en las relaciones dentro de las clases del modelo ..

1

la siguiente extensión hace lo que quiere ... Yii Framework - Extension: cadvancedbehavior

Una cosa importante a destacar: en cada actualización, la extensión borra todos los registros anteriores y crea otros nuevos. Por lo tanto, no lo usaría cuando la tabla intermedia contenga datos adicionales que no sean las claves externas.

0

La pregunta es demasiado común.

Por lo general, los componentes de datos con muchas relaciones a muchos parecen secuencialmente y de forma independiente. Entonces solo necesita hacer una acción de inserción después de otra.

Si su relación necesita actualización depende del que debiera usuario SQL triggers en el nivel de base de datos. Eso garantizará la integridad de los datos y proporcionará una separación bastante buena en la lógica comercial de la aplicación.

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

Una manera similar es incapsulate datos relacionales en un modelo lógico en el nivel PHP (y, por ejemplo, manipular con 2-3 modelos AR allí) y emular SQL desencadena lógica en ella.

+0

Los disparadores son horribles por mantenimiento. En primer lugar, podría considerar usar fks de base de datos y en cascada ... los desencadenadores podrían ser realmente la última opción. – armandomiani

+1

Debes estar bromeando, ¿verdad? ¡Las cascadas FK son de hecho desencadenantes! Pero no puede usarlos "en la inserción". Además, el motor MyIsam de MySql no admite FK, p. En lo que respecta al mantenimiento, no sé cuál es el problema para mantener un procedimiento DB, especialmente si es trivial (y es similar a un FK en cascada) –

Cuestiones relacionadas