CodeIgniter joindre deux tables
J'essaie de joindre deux tables à l'aide de CodeIgniter. J'ai utilisé CodeIgniter guide de l'utilisateur pour obtenir de l'aide. Je vais avoir quelques problèmes où une seule table de données s'affiche et je ne sais pas pourquoi. Quelqu'un peut-il m'aider?
Voici mon code:
Contrôleur
function getall(){
$this->load->model('result_model');
$data['query'] =
$this->result_model->result_getall();
$this->load->view('result_view', $data);
}
Modèle
function result_getall(){
$this->db->select('*');
$this->db->from('tblanswers');
$this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'left');
$query = $this->db->get();
return $query->result();
}
Vue
<div>
<?php foreach ($query as $row): ?>
//tblanswers
<?php echo $row->answerA;?><br>
<?php echo $row->answerB;?><br>
<?php echo $row->answerC;?><br>
<?php echo $row->comment;?><br>
//credentials
<?php echo $row->name; ?>
<?php endforeach; ?>
</div>
- utilisez echo $this->db->last_query() pour voir la requête générée.
- c'est la requête qui est généré SELECT * from (
tblanswers
) LEFT JOINcredentials
SURtblanswers
.answerid
=credentials
.cid
- double possible de codeigniter 2 les données de la table
- utiliser var_dump($query->result())..est-il en montrant de la seconde table de données? qu'est-ce que la sortie de cette?
- u peut expliquer plus sur le dublicate table ?
- Êtes-vous sûr que vous voulez faire un left join?
- où devrait-je ajouter le var_dump ?
- non, je ne suis pas sûr, est-il une meilleure façon au lieu de left join ?
- il y a peut être des colonnes avec le même nom de sorte qu'il peut écraser essayez de sélectionner et de repliement de chaque colonne, vous devez
- Eh bien, cela dépend de ce que vous voulez. Mais si vous retirez le
'left'
paramètre de votrejoin
appel, vous obtiendrez des enregistrements à partir detblanswers
qui ont des enregistrements liés danscredentials
. Si vous utilisez une jointure gauche, vous bénéficiez de tous les enregistrements à partir detblanswers
et il peut ne pas être tous les enregistrements associés danscredentials
, de sorte que ces champs de rester vide. - il n'y a pas de colonnes avec le même nom j'ai fait en sorte de que
- quand j'enlève les left join tous les enregistrements disapiere
- C'est donc un problème avec vos données, et non pas avec votre code. Il n'y a pas d'enregistrements avec
tblanswers.answerid = credentials.cid
. - quel est le problème avec les données ?
- Il n'y a pas d'enregistrements avec
tblanswers.answerid = credentials.cid
. - je suis désolé, je dount undarstand u peut s'étendre de plus sur votre commentaire ?
- Il n'y a pas d'enregistrements dans
tblanswers
qui ont uneanswerid
qui est égale à lacid
colonne de tous les enregistrements dans lacredentials
table. À partir de cette question, il semble que vous n'avez aucune idée de la façon dont les jointures de travail. Jetez un oeil à ceci.
Vous devez vous connecter pour publier un commentaire.
Essayer dans de contrôleur et de voir à quoi le résultat.Aussi,montrez-nous si vous obtenez l'erreur et assurez-vous il existe des données dans votre tableau :).
Contrôleur