我目前有2个数据库。图像&用户。
在我的用户模型中我有:
var $belongsTo=array(
'Image'=>array('className'=>'Image')
);
在我的图像模型中我有:
var $hasOne =array(
'Users'=>array('className'=>'User')
);
我想实现以下目标: 我的用户数据库有一个字段'image_id',它链接到我的图像数据库字段'id'。 例: 图像数据库id = 1 用户数据库image_id = 1
下面是我的image_controller中add函数的代码。我想添加一个特定的图像,我想将图像'id'保存到用户数据库'image_id'。我该如何实现这一目标?
function add() {
$this->layout = "mainLayout";
if (!empty($this->data)) {
$this->Image->create();
if ($this->Image->save($this->data)) {
$user_id = $this->User->getUserInfo($this->Auth->user('id'));
$this->data['User']['image_id'] = $user_id;
$this->Session->setFlash('The image has been saved', true);
$this->redirect(array('controller' => 'Users', 'action' => 'profile'));
} else {
$this->Session->setFlash('The image could not be saved. Please, try again.', true);
}
}
$current_user_pic =$this->User->getUserInfo($this->Auth->user('id'));
$this->set(compact('current_user_pic'));
}
答案 0 :(得分:1)
使用它有一个图像(图像hasOne用户只是在语义上很奇怪)。因此,在保存图像记录时,只需将'user_id'设置为$ this-> Auth-> user('id')),然后再保存。
此外,请勿使用var $uses = array('User','Image');
当您已设置关系时,可以通过用户模型访问图像模型:$this->User->Image->save($this->data)
编辑:好的,所以删除users表中的image_id字段,将user_id字段添加到images表。如果使用bake命令生成代码,您可能希望将代码保存在用户和图像的模型,控制器和视图中,然后重新烘焙这些2.声明关系:用户hasOne Image和Image belongsTo User(我假设你知道怎么做)。
保存图片时,请在$this->data['Image']['user_id'] = $this->Auth->user('id')
$this->User->Image->save($this->data)