CakePHP 3.x kullanıyorum.CakePHP 3 kullanarak birden çok tabloya nasıl katılırsınız?
Ne istediğim $ this-> Kategoriler-> find() öğesini aramak ve sonra Topics on Topics.cat_id = Kategoriler.id öğesine üye olmak ve Posts.topic_id = Topics.id üzerindeki gönderilere katılmak.
Hata görmüyorum, ancak geri döndüğüm tek veri, Kategoriler verileridir, LEFT ve INNER denemeyi denemedim. Herhangi bir yardım büyük takdir edilecektir.
tablo ilişkileri şunlardır:
CategoriesTable
$this->hasMany('Topics');
TopicsTable
$this->belongsTo('Categories');
$this->hasMany('Posts');
PostsTable Ayrıca
$this->belongsTo('Topics');
sorgu i vardır:
$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'
]
]);
bu sorguyu kullanarak "Yayınlar ilişkili değildir Kategoriler" containable davranışı kullanarak ama şimdi hata alıyorum çalıştı: danışma @ndm ile
$query = $this->Categories->find('all')
->order(['Categories.name' => 'ASC'])
->contain(['Topics', 'Posts' => function($q){
return $q->where(['Posts.topic_id' => 'Topics.id']);
}]);
Manuel eklemeler değil, içerik arıyorsunuz. ** http: //book.cakephp.org/3.0/en/orm/query-builder.html#loading-associations** – ndm
@ndm Yanıt için teşekkür ederiz. Sorguları, sonuçları kullanarak herhangi bir öneri kullanarak sonuçlarımı güncelledim mi? – Wisd0m
İç içe geçmiş ilişkileri tanımlamaya daha yakından bakın. – ndm