2009年6月25日木曜日

[Symfony] 複数条件でLEFT INNER JOINをするためのメモ

Criteriaを利用して例えばこんなSQLを組み立てたい場合

SELECT
*
FROM
table1 a
LEFT JOIN
table2 b ON a.column1 = b.column1 AND a.column2 = b.column2

普通にaddJoinを使っても条件をひとつつしか指定できません。
$c = new Criteria();
$c->addJoin(Table1Peer::COLUMN1, Table2Peer::COLUMN1, Criteria::LEFT_JOIN);

// table1 a LEFT JOIN table2 b ON a.column1 = b.column1

少し強引ですが、こういう書き方ができるようです。
$c = new Criteria();
$c->addJoin(Table1Peer::COLUMN1, Table2Peer::COLUMN1 .
' AND ' . Table1Peer::COLUMN2 . ' = ' . Table2Peer::COLUMN2, Criteria::LEFT_JOIN);

// LEFT JOIN table2 b ON a.column1 = b.column1 AND a.column2 = b.column2


Criteriaは柔軟性に欠けるので好きになれません。。。

0 件のコメント: