在cakephp中添加个人资料图片

时间:2011-09-21 13:02:11

标签: php cakephp

我目前有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')); 
}

1 个答案:

答案 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)