Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp关系_Cakephp_Entity Relationship_Relational Database_Cakephp 1.3 - Fatal编程技术网

Cakephp关系

Cakephp关系,cakephp,entity-relationship,relational-database,cakephp-1.3,Cakephp,Entity Relationship,Relational Database,Cakephp 1.3,我有一些不是默认cakephp格式的模型 用户(id、名称……) 菜肴(身份证、姓名、价格…… 餐厅(id、名称等) 模块(id、名称)值(用户、菜肴、餐厅) 项目(id、模块id、项目id) 其中,item_id是指用户、餐具或休息的id,具体取决于模块_id 评论(id、家长id、评论、时间、项目id、评论人id) 1 0 "Best Burger in the world" "time" 3 1 (refers to Harsha reviewing Zinger Burger) 2

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

用户(id、名称……)

菜肴(身份证、姓名、价格……

餐厅(id、名称等)

模块(id、名称)值(用户、菜肴、餐厅)


项目(id、模块id、项目id)

其中,item_id是指用户、餐具或休息的id,具体取决于模块_id


评论(id、家长id、评论、时间、项目id、评论人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绘制关系有点困惑:你可以找到一个关于可以设置关系的键的指南,例如

外键:外键的名称 在另一个模型中找到密钥。这是 特别方便,如果你需要定义 多个hasOne关系。这个 此键的默认值为 带下划线的,单数名称的 当前模型,后缀为“\u id”。在里面 上面的示例将默认为 “用户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',
            ...
很难更加精确,但您还没有提供任何数据模型。要通过模块处理模型的选择,您需要在某个地方的模型上编写一些代码,哪一个取决于您访问数据的方式

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

在本页的书中:您将找到一个指南,介绍您可以在关系上设置的可能键,例如

外键:外键的名称 在另一个模型中找到密钥。这是 特别方便,如果你需要定义 多个hasOne关系。这个 此键的默认值为 带下划线的,单数名称的 当前模型,后缀为“\u id”。在里面 上面的示例将默认为 “用户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',
            ...
很难更加精确,但您还没有提供任何数据模型。要通过模块处理模型的选择,您需要在某个地方的模型上编写一些代码,哪一个取决于您访问数据的方式


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

混淆的是物品属于说用户。所以belongsTo应该是这样的,而不是对项目的权利?混淆是项目属于说用户。所以belongsTo应该是这样,而不是项目,对吗?
1 "Users"
2 "Dishes"
3 "Restaurant"
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)
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)
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',
            ...