2012-08-04 3 views
0

Im nouveau à cakePHP et tout le concept de relations de table est très confus!table cakePHP joignant deux tables numéro

J'ai 2 tables, compétences et compétencesRatings. compétences stocke une liste de noms avec des identifiants.

competencies 
------------ 
id 
name 

Et les utilisateurs peuvent sélectionner différentes compétences de cette table et les évaluer et leurs évaluations sont stockées dans la table competencesRatings.

competenceRatings 
----------------- 
id 
competence_id 
user_id 
rating 

Je veux être en mesure d'obtenir les noms des compétences pour lesquelles un utilisateur a fait aucune note dans la table des competenceRatings. c'est-à-dire que j'ai besoin d'une liste de noms de la table des compétences pour laquelle il n'y a pas d'entrées dans la table comptenceRatings (pour user_id donné).

J'ai essayé compétences-> hasMany-> competencesRatings, competencesRatings-> belongsTo-> compétences relations.

$competencies = $this->Competence->CompetenceRating->find('all',array('CompetenceRating.user_id' => $userId,'CompetenceRating.competence_id !=' => 'Competence.id')); 

Mais pas d'utilisation!

Ce résultat nécessite-t-il d'autres relations? Ou puis-je simplement joindre des tables en utilisant la condition des jointures dans la requête de recherche?

Merci.

EDIT

Cette méthode a fonctionné:

$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); 

Répondre

2

Essayez cette

Joining tables

$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 
     ) 
    ) 
))); 
Questions connexes