CakePHP には 2 つのテーブルがあります。
competencies
------------
id
name
competenceRatings
-----------------
id
competence_id
user_id
rating
次のクエリをケーキのように書く方法が必要です。
SELECT * FROM コンピテンシー WHERE id NOT IN (SELECT コンピテンス_ID FROM コンピテンス_評価 WHERE 従業員 ID = $userId)
誰か助けてください!!
このサブクエリメソッドに行く前に私がしたこと:
コンピテンシー->hasMany->competenceRatings、competenceRatings->belongsTo->コンピテンシー関係を試しました。
$competencies = $this->Competence->CompetenceRating->find('all',array('CompetenceRating.user_id' => $userId,'CompetenceRating.competence_id !=' => 'Competence.id'));
ユーザーが評価を行っていないコンピテンシーの名前を、competenceRatings テーブルに取得できるようにしたいと考えています。つまり、comptenceRatings テーブルに (指定された user_id に対して) エントリがないコンピテンシー テーブルからの名前のリストが必要です。
編集
テーブル結合も試しました:
$options['joins'] = array(
array(
'table' => 'competence_ratings',
'alias' => 'CompetenceRating',
'type' => 'LEFT OUTER',
'conditions' => array(
'Competence.id = CompetenceRating.competence_id'
)
)
);
$options['conditions'] = array( 'CompetenceRating.employee_id' => $employee['Employee']['id'] );
$competencies = $this->Competence->find('all',$options);