2011-09-21 56 views
0

我目前有2个数据库。图片&用户。在cakephp中添加个人资料图片

在我的用户模型,我有:

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

如果你的关系(hasone和属于关联)是正确的之前设置$this->data['Image']['user_id'] = $this->Auth->user('id')那么一切你所需要的只是用“白水”,而不是“保存”,希望你能理解我(: – sukinsan

+0

我不知道如何实现它,关系正常工作 – user448402

回答

1

使它成为User hasOne Image(Image hasOne User在语义上很怪异)。因此,当您保存图像记录时,只需在保存前将'user_id'设置为$ this-> Auth-> user('id'))即可。 $this->User->Image->save($this->data)

编辑:

另外,不要使用var $uses = array('User','Image');当你已经设置的关系,可以通过用户模式访问图像模型好了,删除用户表中的image_id场,USER_ID字段添加到图像表。如果使用bake命令生成代码,则可能需要将代码保存在用户和图像的模型,控制器和视图中,然后重新烘焙这些代码。声明关系:用户拥有一个图像和图像belongsTo用户(我假设你知道如何做到这一点)。

当您保存图像,$this->User->Image->save($this->data)

+0

现在用户ID反映在图像表中,但是当我想添加另一个图像时,图像表不会更新添加的新图像 – user448402

+0

我想要无论何时添加新图像,user_id保持不变,img_file将更改为新图像文件。 – user448402

相关问题