Domanda

Ho alcuni modelli che non sono nel formato cakephp predefinito

utente (id, nome ....)

1 Harsha ...
2 John ....

piatti (id, nome, prezzo ...)

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

ristoranti (id, nome, .....)

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

Valori modulo (ID, nome) (utente, piatti, ristoranti)

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

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

dove item_id si riferisce all'ID di utenti, piatti o riposo a seconda del module_id


Recensioni (ID, Parent_id, Review, Time, Item_id, Commentar_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)

Sono un po 'incasinato su come elaborare le relazioni in cakephp

È stato utile?

Soluzione

Nel libro di questa pagina: http://book.cakephp.org/view/1039/associations-linking-models-together Troverai una guida alle possibili chiavi che puoi impostare sulla relazione, ad esempio

ForeignKey: il nome della chiave straniera trovata nell'altro modello. Ciò è particolarmente utile se è necessario definire più relazioni HasOne. Il valore predefinito per questa chiave è il nome sottolineato e singolare del modello corrente, suffisso con "_id". Nell'esempio sopra, sarebbe impostata predefinita a "user_id".

Supponendo che recensioni e oggetti siano bambini nelle loro associazioni, per entrambe le estremità delle relazioni, imposteresti la straniera come "item_id".

Qualcosa di simile a:

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

È difficile essere più precisi, ma non hai fornito alcun datamodel. Per gestire la selezione del modello tramite il modulo, dovrai scrivere un po 'di codice su un modello da qualche parte, quale (i) dipende da come accedi ai dati.

Tuttavia, mi sembra un buon momento per ristrutturare il database!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top