CakePHP与非常规数据库的关联
我们正在转换一个应用程序,以便与CakePHP 2.0.3一起使用。 出于某种原因,我似乎无法在我的模型之间建立适当的关系 下面是一个例子:CakePHP与非常规数据库的关联,cakephp,associations,database-relations,Cakephp,Associations,Database Relations,我们正在转换一个应用程序,以便与CakePHP 2.0.3一起使用。 出于某种原因,我似乎无法在我的模型之间建立适当的关系 下面是一个例子: 用户(id、petid、国家/地区、picid等) Pet(id、用户id、picid等) 图片(id、相册id等) 相册(id、用户id、小id等) 其含义如下: -一个用户可以有多个宠物,但同时只能选择一个宠物(因此,用户中的宠物) -宠物属于一个用户 -宠物和用户可以有多张图片,但只有一张个人资料图片,因此Pet.picid和User.picid
- 用户(id、petid、国家/地区、picid等)
- Pet(id、用户id、picid等)
- 图片(id、相册id等)
- 相册(id、用户id、小id等)
-宠物属于一个用户
-宠物和用户可以有多张图片,但只有一张个人资料图片,因此Pet.picid和User.picid
-宠物和用户可以有多个相册
我用CakePHP建立了我的模型,但我无法确定它们之间要使用哪些关系,因为数据库没有遵循约定。 我尝试了以下方法:
- 用户
->有很多(宠物)
->哈桑(图片)
->哈斯曼(专辑) - 宠物
->belongsTo(用户)(使用foreignkey用户ID可以正常工作)
->哈斯曼(专辑)
->哈桑(图片) - 相册
->有很多(图片)
->belongsTo(宠物)
- 图片
->贝朗斯托(专辑)
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'SelectedPet' => array(
'className' => 'Pet',
'foreignKey' => 'petid'
),
'ProfilePicture' => array(
'className' => 'Picture',
'foreignKey' => 'picid',
)
);
/**
* hasMany associations
*
* @var array
*/
public $hasMany = array(
'Album' => array(
'className' => 'Album',
'foreignKey' => 'userid',
'dependent' => false
),
'Pet' => array(
'className' => 'Pet',
'foreignKey' => 'userid',
'dependent' => false
)
);
您的宠物模型也可以使用ProfilePicture:
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'userid'
),
'ProfilePicture' => array(
'className' => 'Picture',
'foreignKey' => 'picid'
)
);
/**
* hasMany associations
*
* @var array
*/
public $hasMany = array(
'Album' => array(
'className' => 'Album',
'foreignKey' => 'petid',
'dependent' => false
)
);
图片型号:
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'Album' => array(
'className' => 'Album',
'foreignKey' => 'albumid'
)
);
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'userid'
),
'Pet' => array(
'className' => 'Pet',
'foreignKey' => 'petid'
)
);
/**
* hasMany associations
*
* @var array
*/
public $hasMany = array(
'Picture' => array(
'className' => 'Picture',
'foreignKey' => 'albumid',
'dependent' => false
)
);
…最后是您的相册型号:
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'Album' => array(
'className' => 'Album',
'foreignKey' => 'albumid'
)
);
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'userid'
),
'Pet' => array(
'className' => 'Pet',
'foreignKey' => 'petid'
)
);
/**
* hasMany associations
*
* @var array
*/
public $hasMany = array(
'Picture' => array(
'className' => 'Picture',
'foreignKey' => 'albumid',
'dependent' => false
)
);
关于属于用户或宠物的相册的逻辑,您可以在保存数据或返回数据时在控制器中处理该逻辑。即用户优先于宠物
我希望这有帮助