Comment joindre plusieurs tables en utilisant CakePHP 3?
J'utilise CakePHP 3.x.
Ce que je veux, c'est être en mesure d'appeler $this->Catégories>find() et ensuite rejoindre Sujets sur Sujets.cat_id = Catégories.id et ensuite rejoindre les Posts sur les Poteaux.topic_id = Sujets.id.
Je ne reçois pas toutes les erreurs, mais les seules données que je reçois est de retour, les Catégories de données, j'ai essayé de GAUCHE et l'INTÉRIEUR de la joindre sans succès. Toute aide serait grandement appréciée.
Les relations entre les tables sont:
CategoriesTable
$this->hasMany('Topics');
TopicsTable
$this->belongsTo('Categories');
$this->hasMany('Posts');
PostsTable
$this->belongsTo('Topics');
Également la requête que j'ai:
$query = $this->Categories->find('all')
->order(['Categories.name' => 'ASC'])
->join([
'topics' => [
'table' => 'Topics',
'type' => 'LEFT',
'conditions' => 'topics.Cat_id = Categories.id'
],
'posts' => [
'table' => 'Posts',
'type' => 'LEFT',
'conditions' => 'posts.topic_id = topics.id'
]
]);
Essayé d'utiliser le behavior containable comportement, mais maintenant j'obtiens le message d'erreur "Catégories n'est pas associée à des Postes" à l'aide de cette requête:
$query = $this->Categories->find('all')
->order(['Categories.name' => 'ASC'])
->contain(['Topics', 'Posts' => function($q){
return $q->where(['Posts.topic_id' => 'Topics.id']);
}]);
source d'informationauteur Wisd0m
Vous devez vous connecter pour publier un commentaire.
Avec les conseils de @ndm a donné, j'ai été en mesure d'obtenir le résultat que je voulais. Je dois avoir oublié la section dans les docs, donc n'importe qui d'autre d'avoir ce problème, voici comment faire.
Viens de trouver le type d'héritage de cakephp2, vous pouvez toujours utiliser joindre à l'instar de l'ancienne version.
Trouver familier? vous avez toujours la possibilité d'utiliser d'alias comme avant
Premier temps de répondre, vous ne savez pas comment l'éditeur de code fonctionne, désolé.
Essayez ce qui suit:
Ajouter cette ligne:
pour récupérer des données à partir de Sujets et de Messages