1

我有几个机型这是不是在默认的CakePHP格式CakePHP的关系

用户(ID,姓名....)

1 Harsha ... 
2 John .... 

菜(ID,名称,价格。 ..)

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

餐厅(ID,姓名,......)

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

模块(ID,姓名)值(用户,菜,餐厅)

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

项目(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指用户,菜肴或休息的ID,具体取决于module_i d


评论(ID,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) 

我有点就如何制定在CakePHP中的关系messged了

回答

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

这是很难做到更精确,但你没有提供任何数据模型。要通过模块处理模型的选择,您需要在某个模型上编写一些代码,哪一个取决于您访问数据的方式。

但是,它看起来像是一个重组数据库的好时机!

+0

混淆是项目所属用户说的。所以belongsTo应该是这样的http://pastebin.com/uVrbzVQi而不是物品吧? – 2010-10-27 06:21:00