문제

나는 CakePHP에서 웹사이트를 만들고 있는데, 그것에 대해 좀 새로운 내용입니다.이 문제에 대한 좋은 자료를 찾을 수 없었습니다. 다음과 같습니다.

사용자 등록을 위한 세 가지 테이블 구조가 있습니다. Users, Addresses 그리고 Contacts.다음과 같은 세 테이블 모두에 대한 정보가 포함된 뷰를 구축해야 합니다.

Full Name:         [          ] (from Users)
Shipping Address:  [          ] (from Address)
Mobile Phone:      [          ] (from Contact)
e-Mail Address:    [          ] (from Contact)

이 상황을 처리하는 가장 좋은 방법은 무엇입니까? 특히 절약을 위해.이를 표현하기 위해 새로운 모델을 생성합니다. save() 메소드 자체(데이터베이스의 SQL 뷰일 수 있음) 이 뷰를 처리할 컨트롤러를 생성합니다. bind또는 unbind정보

두 연락처가 서로 다르기 때문에 두 연락처를 어떻게 처리할지 아직도 궁금합니다. INSERT'에스

내가 파헤칠 수 있는 힌트나 자료가 있으면 기뻐할 것입니다.

도움이 되었습니까?

해결책

최신 1.2 코드를 사용하는 경우 API에서 Model::saveAll을 확인하세요.

예.보기는 다음과 같을 수 있습니다.

echo $form->create('User', array('action' => 'add');
echo $form->input('User.name');
echo $form->input('Address.line_1');
echo $form->input('Contact.tel');
echo $form->end('Save');

그런 다음 사용자 컨트롤러 추가 메소드에는 다음과 같은 내용이 있습니다.

...

if($this->User->saveAll($this->data)) {
 $this->Session->setFlash('Save Successful');
 $this->redirect(array('action' => 'index'));
} else {
 $this->Session->setFlash('Please review the form for errors');
}

...

사용자 모델에는 다음과 같은 것이 필요합니다.

var $hasOne = array('Address', 'Contact');

도움이 되었기를 바랍니다!

http://api.cakephp.org/class_model.html#49f295217028004b5a723caf086a86b1

다른 팁

CakePHP를 사용하면 관계를 사용하여 모델 간의 링크를 쉽게 유지할 수 있습니다. http://book.cakephp.org/view/78/Associations-Linking-Models-Together 자세한 내용은.그런 다음 올바른 사용자를 검색하면 해당 사용자의 주소와 연락처 정보도 "무료"로 받게 됩니다.

3가지 모델:사용자, 주소, 연락처

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

모델에서는 다음과 같이 정의합니다.

class User extends AppModel {
var $name = 'User';
var $hasOne = array('Address','Contact');
..

이 보기를 만들려면 다음이 필요합니다. user_id 필드 산업 구애, 그리고 콘택트 렌즈 테이블

뷰에서 이를 사용하려면 재귀 1을 사용하여 사용자 모델에서 찾기를 호출하기만 하면 됩니다(그리고 사용자 컨트롤러는 사용자 모델만 사용함).

$this->User->recursive = 1;
$this->set('user', $this->User->find('first', array('conditions'=>array('id'=>666)));

그러면 뷰에 대해 다음 배열이 생성됩니다.

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top