Pergunta

Eu tenho alguns modelos que não estão no formato BoloPhp padrão

Usuário (ID, nome ....)

1 Harsha ...
2 John ....

pratos (id, nome, preço ...)

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

Restaurantes (id, nome, .....)

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

Valores do módulo (id, nome) (usuário, pratos, restaurantes)

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

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

onde item_id refere -se ao ID de usuários, pratos ou repousos, dependendo do Module_ID


Revisões (ID, Parent_id, Revisão, Time, Item_id, Comentarer_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)

Estou um pouco bagunçado sobre como elaborar os relacionamentos no Cakephp

Foi útil?

Solução

No livro nesta página: http://book.cakephp.org/view/1039/associations-linking-models-together Você encontrará um guia para as teclas possíveis que você pode definir no relacionamento, por exemplo,

ForeignKey: O nome da chave estrangeira encontrada no outro modelo. Isso é especialmente útil se você precisar definir vários relacionamentos hasone. O valor padrão para esta chave é o nome singular sublinhado do modelo atual, sufixo com '_id'. No exemplo acima, seria padrão 'user_id'.

Supondo que críticas e itens sejam crianças em suas associações, para ambas as extremidades dos relacionamentos, você definiria o ForeignKey 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',
            ...

É difícil ser mais preciso, mas você não forneceu nenhum datamodel. Para lidar com a seleção do modelo através do módulo, você precisará escrever algum código em um modelo em algum lugar, que um (s) depende de como você acessa os dados.

No entanto, parece -me um bom momento para reestruturar o banco de dados!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top