Estoy viendo todo tipo de formas diferentes de manejar muchas a muchas relaciones en Yii. Sin embargo, los ejemplos que estoy viendo no están completamente desarrolladas y me siento como que me falta algo.

Por ejemplo, Larry Ullman del tutorial no use la self::MANY_MANY relación – http://www.larryullman.com/2010/08/10/handling-related-models-in-yii-forms/

Así como la medida de como agregar y recuperar los registros, ¿cuál es la forma estándar para el manejo de muchos a Muchos en el Modelo, Vista y Controlador?

aclaración: supongo que estoy buscando un ejemplo que involucra a 2 tablas relacionadas por muchos-a-muchos, donde puedo ver no sólo los dos modelos, pero los controladores y vistas, así por lo que puedo entender completamente lo que pasa.

No es muy claro qué es exactamente lo que estás pidiendo…

OriginalEl autor djt | 2011-03-08

2 Comentarios

  1. 5

    Que realmente necesita la 3 tablas (para un extra de modelo para la tabla dinámica), pero una vez que lo tienes en realidad se puede utilizar de forma regular yii relación con la funcionalidad.

    Por ejemplo, un proyecto de la mina tiene muchos-a-muchos relación entre una Compra y una Transacción (por favor, no preguntes por qué 🙂 ). Así que hay una Compra modelo, un modelo de Transacción y un PurchaseToTransaction modelo que establece vínculos entre ellos. Solo puedo hacer un $oPurchase->las transacciones y Yii va a manejar los muchos-a-muchos pieza utilizando la relación, que se define como sigue:

    'transactions' => array(self::MANY_MANY, 'Transaction', 'PurchaseToTransaction(purchaseId, transactionId)')

    Tenga en cuenta que para las Transacciones, se aplica el mismo pero al revés:

    'purchases'   => array(self::MANY_MANY, 'Purchase', 'PurchaseToTransaction(transactionId, purchaseId)'),

    Por lo tanto $oPurchase->transacciones y $oTransaction->compras son controladas automáticamente por Yii.

    Que, en conclusión, que de hecho puede manejar Muchos-a-Muchos usando las relaciones (al menos la lectura de la parte, por escrito, usted todavía necesita arbitraria soluciones).

    genial, gracias por eso!
    y ¿qué sería de estos arbitraria soluciones? También, ¿tengo que crear un modelo de tabla de puente?
    sí, usted tiene que crear el modelo, pero puede ser simplemente un modelo vacío con el nombre de la tabla dinámica, no hay más lógica. Qué otras soluciones se refiere, hay este comportamiento, por ejemplo: yiiframework.com/extension/save-relations-ar-behavior también la última Yii versiones incluyen una funcionalidad mejorada: code.google.com/p/yii/issues/detail?id=1117
    No es necesario crear una clase del modelo de la tabla intermedia, a menos que hay más lógica que desea adjuntar allí.
    Kantor, pero si no hay necesidad de crear un modelo para la tabla intermedia ¿cómo guardar los registros en la tabla?

    OriginalEl autor Blizz

  2. 0

    Sólo estoy usando Yii. Sólo un idea básica. Si pensabas que de Uno a Muchos no es un problema, entonces usted necesita para crear una tabla intermedia entre como para los Usuarios y Pedidos, crear un UsersOrders tabla para asignar las claves. A continuación, crear una función para obtener los relacionados con las tablas en la clase como $this->UsersOrders->Pedidos() para la función Órdenes en Usuario clase, viceversa.

    De muchos a muchos es en realidad groundup por 3 tablas. 2 de las tablas, pero más ocultos de la tabla en el medio.

    a la derecha tengo que saber sobre las 3 de la tabla, pero me estoy preguntando si Yii tiene una manera de lidiar con muchos a Muchos en una forma sencilla usando relaciones o algo
    Ok, si Yii no manejar. Podemos extender el controlador de tener como $this->Pedidos() en el controlador de Usuarios para obtener la lista de todos los Pedidos, así como otras funciones para agregar/quitar relación.
    Pero Yii no manija de la misma. Verificación de la documentación.
    Tiene usted la prueba? El año pasado, cuando intento jugar con ella, parece que no es totalmente compatible. Si es así, entonces debemos no hay necesidad de pensar acerca de la tabla intermedia como aceptado la respuesta anterior. Se debe gestionar de forma automática. A menos que Yii tiene soporte total en la última versión.

    OriginalEl autor CallMeLaNN

Dejar respuesta

Please enter your comment!
Please enter your name here