Frage

Ich habe ein paar Modelle, die sich nicht im Standard -CakePHP -Format befinden

Benutzer (ID, Name ....)

1 Harsha ...
2 John ....

Gerichte (ID, Name, Preis ...)

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

Restaurants (ID, Name, .....)

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

Modul (ID, Name) Werte (Benutzer, Gerichte, Restaurants)

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

Elemente (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)

Wo item_id auf die ID von Benutzern, Gerichten oder Ruhestellen abhängig von der Module_ID bezieht


Bewertungen (ID, Eltern_ID, Überprüfung, Zeit, 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)

Ich bin ein wenig durcheinander, wie man die Beziehungen in CakePhp aufstellt

War es hilfreich?

Lösung

In dem Buch auf dieser Seite: http://book.cakephp.org/view/1039/associations-linking-models-together Sie finden eine Anleitung zu den möglichen Schlüssel, die Sie auf der Beziehung einstellen können, z. B.

ForeignKey: Der Name des im anderen Modell gefundenen Fremdschlüssels. Dies ist besonders praktisch, wenn Sie mehrere Hasone -Beziehungen definieren müssen. Der Standardwert für diesen Schlüssel ist der unterstrichene, singuläre Name des aktuellen Modells, das mit '_id' suffiziert wird. Im obigen Beispiel würde es standardmäßig 'user_id'.

Unter der Annahme, dass Bewertungen und Gegenstände Kinder in ihren Assoziationen für beide Enden der Beziehungen sind, würden Sie den ForeignKey als "item_id" festlegen.

Etwas wie:

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 ist schwierig, präzise zu sein, aber Sie haben kein Datamodel bereitgestellt. Um die Auswahl des Modells über das Modul zu bewältigen, müssen Sie irgendwo Code auf ein Modell schreiben, welches (s) davon abhängt, wie Sie auf die Daten zugreifen.

Für mich sieht es mir jedoch nach einem guten Zeitpunkt aus, um die Datenbank umzustrukturieren!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top