Cakephp关系

时间:2010-10-26 21:56:38

标签: cakephp entity-relationship relational-database cakephp-1.3

我有一些不属于默认cakephp格式的模型

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

1 Harsha ...
2 John ....

菜肴(身份证,姓名,价格......)

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

餐馆(id,name,.....)

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

模块(ID,名称)值(用户,菜肴,餐馆)

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

项目(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)

其中item_id指的是用户,菜肴或休止符号,具体取决于module_id


评论(id,parent_id,review,time,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中建立关系感到有点麻烦

1 个答案:

答案 0 :(得分: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',
            ...

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

然而,在我看来,这是重组数据库的好时机!