Ben davranmaya çalışıyorum. Yani, yerine şu SQL sözdizimi kullanarak:
select *
from tableA INNER JOIN
tableB on tableA.id = tableB.tableA_id LEFT OUTER JOIN
( tableC INNER JOIN tableD on tableC.tableD_id = tableD.id)
on tableC.tableA_id = tableA.id
Ben CakePHP'ye model->find()
kullanmak istiyorum. Bu, bu kadar anladığım kadarıyla özel SQL sorguları ile çalışmak olmaz çünkü (bana biraz esnek görünüyor modele tek Sayfalandırması sorgu kodlamalısınız sürece) ben de Paginator
kullanmak izin verir.
Ben bugüne kadar ne denedim:
/* inside tableA_controller.php, inside an action, e.g. "view" */
$this->paginate['recursive'] = -1; # suppress model associations for now
$this->paginate['joins'] = array(
array(
'table' => 'tableB',
'alias' => 'TableB',
'type' => 'inner',
'conditions' => 'TableB.tableA_id = TableA.id',
),
array(
'table' => 'tableC',
'alias' => 'TableC',
'type' => 'left',
'conditions' => 'TableC.tableA_id = TableA.id',
'joins' = array( # this would be the obvious way to do it, but doesn't work
array(
'table' => 'tableD',
'alias' => 'TableD',
'type' => 'inner',
'conditions' => 'TableC.tableD_id = TableD.id'
)
)
)
)
Bu yapının içine katılır iç içe olduğunu. Ama bu (CakePHP sadece beklediğim ne tür iç içe 'joins'
eleman yok sayar, ama üzgün çalışmıyor.
Ben bir deyim oluşturucu kullanarak (where
fıkrasında) alt sorgular nasıl yorumlarına ipuçlarını gördük. Benzer bir hile burada kullanılabilir mi?