我对cakePHP很新,整个表关系概念非常混乱!
我有2个表,能力和能力评分。能力存储带有ID的名称列表。
competencies
------------
id
name
用户可以从此表中选择各种能力并对其进行评分,并将其评分存储在compeRatings表中。
competenceRatings
-----------------
id
competence_id
user_id
rating
我希望能够获得用户未在compeRatings表中进行任何评级的能力名称。即,我需要来自能力表的名单列表,其中comptenceRatings表中没有条目(对于给定的user_id)。
我尝试了能力 - > hasMany-> compeRatings,compeRatings-> 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 );
答案 0 :(得分: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
)
)
)));