cakePHP表连接两个表问题

时间:2012-08-04 14:05:00

标签: cakephp jointable

我对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 );

1 个答案:

答案 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
        )
    )
)));