Как использовать объединение в доктрине запроса Symfony 1.4? - PullRequest
3 голосов
/ 28 февраля 2012

Я хочу иметь такой запрос в mysql:

выберите ax, ay, a.foo, sum (a.bar) как bar_sum из mytable объединение топоров groupby выберите ax, ay, a.bar, sum (a.foo) как foo_sum из mytable groupby ау

этот формат верный? и как я могу преобразовать его в запрос доктрины в Symfony?

Большое спасибо

1 Ответ

6 голосов
/ 28 февраля 2012

Я считаю, что UNION не поддерживается с использованием DQL (язык запросов доктрины) .Но похоже, что кто-то смог обойти проблему, используя неприятный heredoc .

Или вы можете просто добавить собственный метод в класс однорангового объекта и написать запрос на нативномsql.

- Изменить -

В качестве примера использовать (не проверено):

// Assuming you have the default doctrine setup, where non-object classes are
//  appended with Table (your object being Foo)
class FooTable
{
    public static function getFooBarUnion()
    {
        $sql = "select a.x, a.y, a.foo, sum(a.bar) as bar_sum from mytable a groupby a.x union select a.x, a.y, a.bar, sum(a.foo) as foo_sum from mytable a groupby a.y";

        $results = Doctrine_Query::create()->query($sql);

        return $results;
    }
}
...