Cakephp关系
我有一些不是默认cakephp格式的模型 用户(id、名称……) 菜肴(身份证、姓名、价格…… 餐厅(id、名称等) 模块(id、名称)值(用户、菜肴、餐厅)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
项目(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',
...