2011-09-21 4 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의 추가 기능에 대한 코드입니다. 특정 이미지를 추가하고 이미지 '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의 및 belongsTo를이) 맞다면 $this->User->Image->save($this->data) 전에 $this->data['Image']['user_id'] = $this->Auth->user('id')을 설정 한 후 모든 것을 당신이 대신 '저장' '시려면 그냥 사용됩니다 필요 당신이 (나를 이해 무슨 희망 : – sukinsan

+0

구현 방법을 잘 모르겠습니다. 관계가 올바르게 작동합니다. – user448402

답변

1

사용자 hasOne 이미지 (이미지 hasOne 사용자는 의미 론적으로 이상 함)입니다. 그래서 이미지 레코드를 저장할 때 저장하기 전에 'user_id'를 $ this-> Auth-> user ('id')로 설정하십시오. 좋아, 그래서 사용자 테이블의 image_id 필드를 제거, 이미지에 USER_ID 필드를 추가 : $this->User->Image->save($this->data)

편집 : 당신은 이미 관계를 설정하면 var $uses = array('User','Image');를 사용하지 않는 또한

는, 당신은 사용자 모델을 통해 이미지 모델에 액세스 할 수 있습니다 표. bake 명령을 사용하여 코드를 생성하는 경우 모델, 컨트롤러 및 뷰에 코드를 저장하여 사용자와 이미지를 저장 한 다음 다시 구울 수 있습니다. 2. 선언 관계 : 사용자 hasOne 이미지 및 이미지 belongsTo 사용자 (사용자가 가정합니다 그 방법을 아십시오). 이미지를 저장하면

+0

이제 사용자 ID가 이미지 테이블에 반영되지만 다른 이미지를 추가하려는 경우 이미지 테이블이 추가 된 새 이미지를 업데이트하지 않습니다. – user448402

+0

원함 새 이미지가 추가 될 때마다 user_id는 동일하게 유지되고 img_file은 새 이미지 파일로 변경됩니다. – user448402