Не получить отчетливые результаты запроса в Symfony 1.4 / Doctrine - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть этот запрос в моем классе TurnoveroverVolumeTable:

$query = $this->createQuery('tv')
        ->addSelect('DISTINCT tv.debtor_number')
        ->addSelect('tv.debtor_name')
        ->addSelect('tv.country_description')
        ->addSelect('SUM(tv.turnover_ytd) as tv.turnover_ytd')
        ->addSelect('tv.currency_description')
        ->from('TurnoverVolume tv')
            ->innerJoin('tv.Agent a')
            ->andWhere('tv.debtor_number = a.debtor_number')
            ->andWhere('a.agent_number =?', $agent)
            ->andWhere('tv.period LIKE "' . $year .'%"')
            ->groupBy('tv.debtor_number');

При получении и отображении данных я использую это в своем классе действий:

$query = Doctrine_Core::getTable('TurnoverVolume')->getYearTurnover($agent_number, $this->currentYear);

$results = $query->execute();

        $turnover_data = array();
        foreach ($results as $turnover) {
            $turnover_result = array(
                'debtor_number' => $turnover['debtor_number'],
                'debtor_name' => $turnover['debtor_name'],
                'country_description' => $turnover['country_description'],
                'turnover_ytd' => $turnover['turnover_ytd'],
                'currency_description' => $turnover['currency_description']
            );
            $turnover_data[] = $turnover_result;
        }

Результат, который я получаю для оборачивания_торговли, равен 2703, но должен быть 277450, он получает только первый результат 2011 года, а не общий результат 2011 года.

В логах Symfony у меня есть запрос MySQL:

SELECT DISTINCT t.company_number AS t__company_number, t.debtor_number AS t__debtor_number, t.period AS t__period, t.debtor_name AS t__debtor_name, t.country_description AS t__country_description, t.currency_description AS t__currency_description, SUM(t.turnover_ytd) AS t__0 FROM turnover_volume t INNER JOIN agent a ON t.debtor_number = a.debtor_number WHERE (t.debtor_number = a.debtor_number AND a.agent_number = '003' AND t.period LIKE "2011%") GROUP BY t.debtor_number

Что дает мне правильный результат, когда я вношу его непосредственно в базу данных MySQL.

Может кто-нибудь объяснить мне, что я могу делать не так?

1 Ответ

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

Помогает ли это?

DISTINCT должен быть написан заглавными буквами «как» должен быть использован, без этого все будет возвращено используйте fetchArray () вместо execute (), последний не работает!

источник

...