2013-05-23 2 views
0

연락처 및 견적 테이블이 두 개 있습니다. 일대 다 (1 개의 연락처에 많은 인용 부호가있을 수 있음) 관계입니다. 외래 키가 모두 올바르게 설정되었습니다.CakePHP 내 테이블에 다른 테이블에 액세스

새 견적을 만들 때 연락처 드롭 다운 목록에서 선택할 수 있기를 원합니다.

연락 모델 :

class Contact extends AppModel {   
    public $hasMany = array('Quote' => array('className' => 'Quote', 'foreignKey' => 'contact_id')); 
} 

견적 모델

class Quote extends AppModel {  
    public $belongsTo = array('Contact' => array('className' => 'Contact', 'foreignKey' => 'contact_id')); 

    public $validate = array(
      'name' => array(
        'rule' => 'notEmpty' 
      ), 
      'amount' => array(
        'rule' => 'notEmpty' 
      ) 
    );  
} 

추가 방법 QuotesController에가 :

public function add() { 
    // TODO: Update this so the user can select the id from a drop down list. 
    $this->request->data['Quote']['contact_id'] = '1'; 

    if ($this->request->is('post')) {     
     $this->Quote->create(); // This line writes the details to the database. 
     if ($this->Quote->save($this->request->data)) {    
      $this->Session->setFlash('Your quote has been saved.'); 
      $this->redirect(array('action' => 'index')); 
     } else {     
      $this->Session->setFlash('Unable to add your quote.'); 
     }    
    } 
} 

당신은 내가 볼 수 있듯이

내 코드는 다음과 같습니다 지금은 단지 하 야. 추가 프로세스의 일부로 사용자 ID를 코딩합니다.

+0

스티븐, 목표를 명확히 할 의향이 있습니까? 무슨 일이 일어나기를 기대합니까, 현재 일어나고있는 일이며, 당신이 그것을 성취하는 것을 방해하는 어떤 문제가 있습니까? –

답변

1

당신이 읽고이 방법을 사용하고 있다고 가정합니다.

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find-list

그래서 컨트롤러에 당신이보기에 그런

$contacts = $this->Article->find('list', array('fields' => array('Contact.id', 'Contact.name')); 
$this->set(compact('contacts')); 

하고 싶지 : 찾을 수

http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::select

쉽지 (또는 간과하기 쉬운)이있다 :

echo $this->Form->select('contact_id', $contacts); 

모델의 실제 내용을 반영하기 위해 찾기 필드를 수정하십시오. 그리고 결합 된 입력란이 필요한 경우 가상 입력란으로 입력 할 수 있습니다 (http://book.cakephp.org/2.0/en/models/virtual-fields.html). 그렇지 않으면 합성해야 할 필드를 선택하고 foreach 루프를 사용하여 id => [표시된 값] 배열로 결합하여 뷰로 전달할 수 있습니다. id는 중요한 것이고 Contacts 테이블의 id와 일치해야합니다.

+0

사실, 모든 것이 제대로 설정되어 있다면 (http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#creating-form-elements), 여러분은 '$ this-> Form-> select ('contact_id', $ contacts)') 형식으로'$ this-> Form-> input ('contact_id')'형식으로'$ contacts ' 잘 형성된다. – Nunser

+0

@Erik, @ 변경 사항을 만들었지 만 다음과 같은 오류가 발생했습니다. 객체가 아닌 객체에서 find()를 호출합니다. – Stephen

+0

내 모델 연관과 관련이있을 수 있다고 생각합니다. 더 조사하십시오. – Stephen

관련 문제