당신은 단지
//your code for user saving
if($this->User->save())
$this->User->Profile->save(array('user_id'=>$this->User->id))
또는 그와 타다의 변형을, 사용자 생성에 대한 프로필을 만들 수 있습니다, 빈 프로파일 저장합니다.
사실 이 항상 인 경우 최근에 생성 된 사용자에게 프로필을 추가하려는 경우 사용자 모델의 afterSave에서 수행 할 수 있습니다.
class User extends AppModel {
public function afterSave($created) {
//make sure to do it on creation and not on update
if ($created) {
$this->Profile->save(array('user_id'=>$this->getLastInsertID());
}
}
}
프로필 모델에 유효성 검사를 설정하면 트리거됩니다. 프로필에 null 일 필요가없는 열 "작업"이 있다고 가정하면 일부 오류가 나타납니다. 당신은 당신이 할 수있는,
class Profile extends AppModel {
public $validate = array(
'job' => array(
'notempty' => array(
'rule' => array('notempty'),
'message' => 'You have to have a job',
'allowEmpty' => false,
'required' => true,
'on' => 'update'
)
),
/* etc */
}
다른 옵션은 단순히 ... 당신이 원하지 않는 경우 :)하는 사용자가 미친 듯이 프로필을 추가하려면 어떻게하지 않는 것입니다 검증 과정에서 on
옵션을 추가하여 그것을 무시할 수 "하드 코드"는 프로필의 사용자 ID입니다. 예를 들어, 당신이 프로필 컨트롤러 여기 저기 몇 IFS와
class ProfilesController extends AppController {
public function add($user_id) {
//lets assume you have the user id somewhere, maybe even get the logged session one
if($this->request->is('post')) {
//when you are saving, force the add (or edit) to be for the user_id, not anyone
$this->request->data['Profile']['user_id'] = $user_id;
$this->Profile->save();
}
}
에서 추가 조치가 있다고 가정하자, 바로 사용자 생성 후 빈 프로필을 만들 필요가 없습니다. 그러나 어느 쪽도 아프지 않습니다 ...
개인적으로 나는 모든 사용자 생성 사례에서 빈 프로필을 추가하려는 경우 afterSave 옵션을 좋아합니다. 컨트롤러의 코드가 적지 만 프로필 검증에 신중해야합니다.
아, 프로필에서 "id와 user_id"가 같지 않습니다. 정말로 필요는 없습니다. 간단한 찾기를 사용하면 문제없이 사용자와 프로필을 얻을 수 있으므로 케이크가 외부 키를 처리하도록하십시오.
고맙습니다. 훌륭한 답변이며 정확히 내가 원했던 것입니다. – user2033570
다행입니다. :) – Nunser