1

У меня есть несколько моделей, которые не находятся в формате CakePHP по умолчаниюCakePHP Отношения

пользователя (идентификатор, имя ....)

1 Harsha ... 
2 John .... 

блюда (ID, имя, цена. ..)

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

рестораны (номер, имя, .....)

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

модуль (номер, имя) значения (пользователь, столовыми, Рестораны)

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

элементы (идентификатор, 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) 

где item_id относится к идентификатору пользователей, блюдам или остаткам в зависимости от модуля_i d


отзывы (идентификатор, parent_id, обзор, время, 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) 

Я немного messged до того, как составить отношения в CakePHP

ответ

1

В книге на этой странице: http://book.cakephp.org/view/1039/Associations-Linking-Models-Together вы найдете руководство по возможным ключам, которые вы можете установить для отношений, например

foreignKey: имя иностранного ключ, найденный в другой модели. Это особенно удобно, если вам нужно определить несколько отношений hasOne. Значение по умолчанию для этого ключа - это подчеркнутое, единственное имя текущей модели с суффиксом '_id'. В приведенном выше примере по умолчанию он будет равен 'user_id'.

Предполагая, что отзывы и предметы являются дочерними элементами в их ассоциациях, для обоих концов отношений вы должны установить foreignKey как «item_id».

Что-то вроде:

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

Это трудно быть более точным, но вы не предоставили никакой DataModel. Чтобы обрабатывать выбор Модели с помощью модуля, вам нужно написать какой-то код на модели где-нибудь, какой (-ы) зависит от того, как вы обращаетесь к данным.

Тем не менее, мне очень нравится реструктурировать базу данных!

+0

путаница - это предмет, который принадлежит пользователю. так принадлежит. Должно быть как это http://pastebin.com/uVrbzVQi, а не вправо? –

Смежные вопросы