Propel - объединение в одну таблицу несколько раз и группирование - PullRequest
1 голос
/ 01 ноября 2011

Я пишу отчет в Propel и мне нужно присоединиться к одной и той же таблице несколько раз, чтобы получить различную статистику для разных диапазонов дат с использованием одних и тех же данных.

Проблема заключается в том, что propel игнорирует несколько вызовов ->leftJoin() в запросе. Я думаю, что мне нужно создать псевдонимы для каждого объединения, чтобы их можно было обрабатывать индивидуально, но я не могу найти способ сделать это.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Попробуйте addJoin ()

$c = new Criteria();
$c->addJoin(array(Table1Peer::ID,), array(Table2Peer::Table1Peer_ID,), Criteria::LEFT_JOIN);

Похоже, вы также можете использовать псевдоним:

$c->addJoin(TablePeer::alias("alias1", TablePeer::PRIMARY_KEY_COLUMN), TablePeer::PRIMARY_KEY_COLUMN);

С возможностью псевдонима и передачи в массивах кажется, что вы должны быть в состоянии сделать несколько соединений к одной таблице.

0 голосов
/ 04 мая 2014

Или, вы можете просто добавить "RelatedBy" методы отношений ...

Пример.

ItemQuery::create()
->leftJoinItemRelatedByCodItemFather( 'Child' )
    ->addAsColumn( 'ChildName', "Child.name" )
->find() ;

Я всегда предпочитаю использовать автоматически генерируемые методы Propel= D

...