Ben bir uygulama için uskur PHP çerçevesinde v1.3 kullanıyorum ve ben Criteria
nesnesini kullanarak türetilmiş bir tablo seçmek için bir yol bulamıyorum. Ben istiyorum SQL parçasıdır:
SELECT unioned_table.foo, quux.stuff, baz.more_stuff...
FROM
quux
INNER JOIN
(SELECT foo, bar FROM table1
UNION
SELECT foo, bar FROM table2
) AS unioned_table
ON quux.field = unioned_table.foo
INNER JOIN baz
ON baz.blah = unioned_table.bar
INNER JOIN ...
WHERE conditions...
Gerçek SQL bundan daha karmaşık, ama bu sadece daha katıldı içerir.
Ne yazık ki SQL-kaçış tablo tanımını çalıştığı ama ben, Criteria::addAlias()
kullanmak denedim. Sonunda bu şekilde SQL yazmaya çalışıyorum vazgeçti, ve (bu örnekte unisoned_table
denir) bir görünüm yarattı.
Gelecek bu tabloya katılır eklemek çalıştı:
$c->addSelectColumn('unioned_table.foo');
$c->addSelectColumn(QuuxPeer::STUFF);
$c->addSelectColumn(BazPeer::MORE_STUFF);
// ...
$c->addJoin(QuuxPeer::FIELD, 'unioned_table.foo', Criteria::INNER_JOIN);
$c->addJoin(BazPeer::BLAH, 'unioned_table.bar', Criteria::INNER_JOIN);
// ...
$c->add(QuuxPeer::STUFF, $someval);
// ...
Ne yazık ki bu birleştirilen twice görünümünde sonuçları - bir iç qux
ile katılmak gibi bir kez, ve bir kez çapraz olarak baz
ile katılmak. Ben baz
SELECT sütunu kaldırırsanız Tuhaf, ardından çapraz kaybolur katılın.
Herkes bunu nasıl olarak herhangi bir öneriniz var mı? Bu Criteria
(vb, ekstra şartlar eklendi, sütunlar yerine) değiştirilmiş ya da bir doCount()
aramada kullanılan gerekebilir gibi, sadece çıplak özel SQL kullanamazsınız.