0

我是 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 );
4

1 回答 1

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
        )
    )
)));
于 2012-08-04T14:39:51.670 回答