2010-12-30 17 views
0

私は今自分自身を完全に混乱させました。cakephp:検索結果の結合を使用する

applicantsapplicants_qualifications、およびqualificationsの3つのテーブルがあります。

応募者のインデックスビューには、資格のドロップダウンリストがあります。結果は、その資格を持つ応募者のリストでなければなりません。

私はインデックスビューの応募者のテーブルが結合に基づいている必要がありますか?

私はapplicants_controllerにこれを追加した場合:

$options['joins'] = array( 
    array( 
     'table' => 'applicants_qualifications', 
     'alias' => 'q', 
     'type' => 'left outer', // so that I get applicants with no qualifications too 
     'conditions' => array('Applicant.id = q.applicant_id',) 
    ) 
); 
$this->Applicant->find('all', $options); 

私は左の外側で、ページの一番下に追加のSQL文を取得する加入が、参加せずに、SQLがあまりにもあります。

私はこのラインを考える:

$this->set('applicants', $this->paginate()); 
が参加せずにSQL文を呼び出します

私はjoin $ optionsとページ分割呼び出しを組み合わせる必要があります。そうですか?

私は検索フォームを使用している場合は、私が得る:結合と私のSQL「を使用して」「WHERE句」

だからページはまだ明らかではありません不明な列「Qualifications.qualification_id」を。

申し訳ありません - 私はまだノーベルです。次のようにあなたがそれを行う必要があり、あなたのモデルのページネーションのためconditionsjoins、などを設定するために任意のヘルプ感謝...

答えて

1

、:

function admin_index() { 
    $this->Applicant->recursive = 0; 
    $this->paginate = array(
     'Applicant' => array(
      // 'conditions' => array('Applicant.approved' => true), 
      'joins' => array(
       array(
        'table' => 'applicants_qualifications', 
        'alias' => 'ApplicationsQualification', 
        'type' => 'left outer', 
        'conditions' => array('Applicant.id = ApplicationsQualification.applicant_id') 
       ) 
      ) 
      // 'order' => array('Applicant.joined DESC') 
     ) 
    ); 
    $this->set('applicants', $this->paginate()); 
} 

私はあなたが含むことができ、いくつかのサンプルのキーをコメントアウトしました後で - それがどのように動作するかをあなたに知らせるだけです。

希望に役立ちます!

+0

おかげで再びRabidFire!完璧に動作します。 私はcakephpとstackoverflowを愛しています! – Vauneen

0

左外部結合の代わりに内部結合を使用できます。たとえば、

讲义1コースコントローラで

$cond = array(
      array(
       'table' => 'colleges', 
       'alias' => 'Colleges', 
       'type' => 'inner', 

       'conditions'=> array('Colleges.college_id = Courses.college_id') 
      ) 

      ) ; 


     $courses = $this->Courses->find('all', 
      array('joins' =>$cond,'conditions' => array("Courses.status ='1' AND Colleges.status='1' "), 
        'order'=>array('course_name'), 
        'fields' => array('course_id','course_name'),'group'=>'Courses.course_id' 
       ) 
     );