Question

J'ai quelques modèles qui ne sont pas dans le format CakePHP par défaut

Utilisateur (ID, nom ....)

1 Harsha ...
2 John ....

plats (id, nom, prix ...)

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

restaurants (id, nom, .....)

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

Valeurs du module (ID, nom) (utilisateur, plats, restaurants)

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

Éléments (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)

où item_id fait référence à l'ID des utilisateurs, des plats ou des repos en fonction du module_id


Avis (id, parent_id, avis, time, item_id, commentaire_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)

Je suis un peu foiré sur la façon de nouer les relations dans CakephP

Était-ce utile?

La solution

Dans le livre sur cette page: http://book.cakephp.org/view/1039/associations-liking-models-together Vous trouverez un guide des clés possibles que vous pouvez définir sur la relation, par exemple

ForeignKey: le nom de la clé étrangère trouvée dans l'autre modèle. Ceci est particulièrement pratique si vous avez besoin de définir plusieurs relations Hasone. La valeur par défaut de cette clé est le nom singulier souligné du modèle actuel, suffixé avec «_id». Dans l'exemple ci-dessus, il serait par défaut «user_id».

En supposant que les avis et les éléments sont des enfants dans leurs associations, aux deux extrémités des relations, vous définissez la ForeignKe en tant que «item_id».

Quelque chose comme:

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',
            ...

Il est difficile d'être plus précis, mais vous n'avez fourni aucun Datamodel. Pour gérer la sélection du modèle via le module, vous devrez écrire un code sur un modèle quelque part, lequel (s) dépend de la façon dont vous accédez aux données.

Cependant, cela me semble être un bon moment pour restructurer la base de données!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top