2012-08-04 65 views
0

我新加入cakePHP和整個表關係的概念很混亂!cakePHP表加入兩個表問題

我有2表,能力和competenceRatings。能力存儲名稱與ID的列表。

competencies 
------------ 
id 
name 

而且,用戶可以從該表中選擇不同的能力和評價他們和他們的收視率被存儲到competenceRatings表。

competenceRatings 
----------------- 
id 
competence_id 
user_id 
rating 

我希望能夠獲得用戶沒有對能力評分表進行任何評分的能力的名稱。即,我需要能力表中沒有條目的能力表中的名稱列表(對於給定的user_id)。

我試圖competencies-> hasMany-> competenceRatings,competenceRatings-> belongsTo->競爭力的關係。

$competencies = $this->Competence->CompetenceRating->find('all',array('CompetenceRating.user_id' => $userId,'CompetenceRating.competence_id !=' => 'Competence.id')); 

但沒用!

這個結果是否需要其他關係?或者我可以在查找查詢中使用連接條件連接表嗎?

謝謝。

編輯

此方法處理:

$options['joins'] = array(
    array(
     'table' => 'competence_ratings', 
     'alias' => 'CompetenceRating', 
     'type' => 'LEFT OUTER', 
     'conditions' => array(
      'Competence.id = CompetenceRating.competence_id', 
      'CompetenceRating.user_id' => $userId 
     ) 
    ) 
); 
$options['conditions'] = array('CompetenceRating.competence_id'=> null); 

回答

2

試試這個

連接表

$data = $this->Competence->find('all', array('joins' => array(
    array(
     'table' => 'competenceRatings', 
     'alias' => 'CompetenceRating', 
     'type' => 'inner', 
     'foreignKey' => false, 
     'conditions'=> array('CompetenceRating.competencie_id = Competence.id') 
    ), 
    array(
     'table' => 'competencies', 
     'alias' => 'Competence', 
     'type' => 'inner', 
     'foreignKey' => false, 
     'conditions'=> array(
      'Competence.id = MarkersTag.tag_id', 
      'Competence.user_id' => $user_id 
     ) 
    ) 
)));