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