我是 cakePHP 新手,整个表关系的概念非常混乱!
我有 2 张桌子、能力和能力评级。能力存储带有 id 的名称列表。
competencies
------------
id
name
用户可以从该表中选择各种能力并对其进行评分,并将其评分存储在 CompetencyRatings 表中。
competenceRatings
-----------------
id
competence_id
user_id
rating
我希望能够获得用户没有对competitionRatings 表进行任何评级的能力名称。即,我需要能力表中的名称列表,其中 comptenceRatings 表中没有条目(对于给定的 user_id)。
我尝试了能力->hasMany->competenceRatings,competenceRatings->belongsTo->competencies 关系。
$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 );