2010-12-10 38 views
0

J'ai un certain nombre de tables auxquelles j'essaie d'accéder dans CodeIgniter, et l'une d'entre elles est essentiellement une collection de clés étrangères des autres tables, dont la plupart ne sont que deux champs: un identifiant unique et un nom. La table "campagnes", appelons-la, extrait les données des autres tables sous la forme de ces tables (car les noms ne sont pas forcément uniques). Maintenant, ce que je veux faire est d'afficher les données "campagnes" sous une forme lisible par l'homme, ce qui signifie, en montrant les noms étrangers, pas les identifiants. Je pense que c'est ce qu'on appelle une «participation», mais je ne suis pas certain à 100% de cela. J'ai vérifié la page de MySql et ils ont dit que ce n'était pas vraiment ce à quoi servaient les clés étrangères, mais je pensais que vous aviez besoin de clés étrangères pour une jointure, donc je suis vraiment plus confus maintenant. Est-ce que j'utilise vraiment des jointures et des clés étrangères pour cela? Merci d'avance.Comment sélectionner une relation un-à-plusieurs dans CodeIgniter?

Répondre

2

La clé étrangère fournit un lien vers un autre enregistrement de la même table ou d'une autre table (généralement la dernière). Une jointure utilise des données communes dans deux tables (parfois la même table) pour fournir un lien entre elles.

Si vous avez deux tables que vous souhaitez joindre et que le seul facteur commun entre ces deux tables est dans une troisième table (celle avec toutes les clés étrangères), vous devrez effectuer 2 jointures.

Exemple

SELECT *.table1, *.table2 FROM table1 
LEFT JOIN foreign_key_table ON foreign_key_table.id1 = table1.id 
LEFT JOIN table2 ON foreign_key_table.id2 = table2.id 
WHERE..... 

En Codeignter:

$this->db->select('*.table1, *.table2'); 
$this->db->from('table1'); 
$this->db->join('foreign_key_table', 'foreign_key_table.id1 = table1.id'); 
$this->db->join('table2', 'foreign_key_table.id2 = table2.id'); 
$this->db->where('...'); 

Vous pouvez trouver toutes les informations dont vous avez besoin ici - http://codeigniter.com/user_guide/database/active_record.html

Hope this helps.

+1

Donc, vous dites essentiellement que la jointure elle-même devrait prendre soin de lier l'ID de la clé étrangère avec le nom et afficher le contenu lisible par l'utilisateur automatiquement? Alors ok. Je suppose que je dois juste comprendre comment obtenir CodeIgniter pour que ça marche pour moi. C'est tellement plus difficile que Rails. Merci! – StormShadow