Pregunta

Tengo algunos modelos que no están en el formato de tailephp predeterminado

Usuario (ID, nombre ...)

1 Harsha ...
2 John ....

platos (identificación, nombre, precio ...)

1 "Cheese Pizza" 6
2 "Zinger Burger" 3

restaurantes (identificación, nombre, .....)

1 "KFC" ...
2 "Pizza Hut" ...

Módulo (ID, nombre) Valores (usuario, platos, restaurantes)

1 "Users"
2 "Dishes"
3 "Restaurant"

Elementos (ID, Module_id, item_id)

1 1 1 (refers to User Harsha)

2 3 2 (refers to Pizza hut)

3 2 2 (refers to Zinger Burger)

4 1 2 (refers to User John)

donde item_id se refiere a la identificación de usuarios, platos o descansos dependiendo del módulo_id


Revisiones (ID, Parent_id, Review, Time, Item_ID, Commenter_id)

1 0 "Best Burger in the world" "time" 3 1 (refers to Harsha reviewing Zinger Burger)

2 1 "Yes i love Zingers tooo" time 3 2 ( refers to John replying to Harsha's Review)

Estoy un poco desordenado sobre cómo dibujar las relaciones en CakePhp

¿Fue útil?

Solución

En el libro en esta página: http://book.cakephp.org/view/1039/associations-linking-models-together Encontrará una guía de las posibles claves que puede establecer en la relación, por ejemplo,

ExtrayKey: el nombre de la clave extranjera que se encuentra en el otro modelo. Esto es especialmente útil si necesita definir múltiples relaciones hasone. El valor predeterminado para esta clave es el nombre singular subrayado del modelo actual, sufijo con '_id'. En el ejemplo anterior, sería predeterminado a 'User_ID'.

Suponiendo que las revisiones y los elementos son niños en sus asociaciones, para ambos extremos de las relaciones, establecería el KeyKey como 'item_id'.

Algo como:

dishes:
class Dish extends AppModel {
    var $name = 'Dish'; 
    var $hasMany = array(
        'Item' => array(
            'className'     => 'Item',
            'foreignKey'    => 'item_id',
            ...
items:
class Item extends AppModel {
    var $name = 'Item'; 
    var $belongsTo = array(
        'Dish' => array(
            'className'     => 'Dish',
            'foreignKey'    => 'item_id',
            ...
            ),

        'Restaurant' => array(
            'className'     => 'Restaurant',
            'foreignKey'    => 'item_id',
            ...

Es difícil ser más preciso, pero no ha proporcionado ningún DataModel. Para manejar la selección del modelo a través del módulo, deberá escribir algún código en un modelo en algún lugar, cuál (s) depende de cómo acceda a los datos.

Sin embargo, ¡me parece un buen momento para reestructurar la base de datos!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top