Yii не удалось получить максимальное значение столбца - PullRequest
0 голосов
/ 19 августа 2011

У меня есть две модели, одна Аукцион , другая Ставка .

Аукцион имеет много заявок. они связаны внешним ключом auction_id в ставке

Теперь я хочу найти значение max цены Bid для каждого Аукциона.

$dataProvider = new CActiveDataProvider('Auction', array('criteria' => array(
                    'with' => array(
                        'bids' => array(
                            'alias'=>'b',
                            'group' => 'auction_id',
                            'select' => 'max(b.price) as maxprice'
                        )
                   )
             )
        )
);

И я определил свойство maxprice в классе модели Аукциона.

Однако, если я пытаюсь получить свойство maxprice , возвращается NULL .

Если быть более точным, я отображаю $ dataprovider на странице просмотра, ему не удается получить свойство maxprice .

PS:

Я выполнил запрос в mysql, результат запроса оказался верным.

Итак, должно быть что-то не так с кодом Yii

код SQL:

SELECT `t`.`id` , max(b.price) as maxprice

FROM `auction` `t` 

LEFT OUTER JOIN `bid` `b` ON (`b`.`auction_id`=`t`.`id`)  GROUP BY auction_id

1 Ответ

1 голос
/ 19 августа 2011

Поместите нужное значение перед отношением, например так:

$dataProvider = new CActiveDataProvider('Auction', array('criteria' => array(
    'select' => 't.*, max(b.price) as maxprice',
    'with' => array(
        'bids' => array(
            'alias'=>'b',
            'group' => 'auction_id',
            'together'=>true,
        )

Вы можете заменить "t. *" На конкретные имена полей, если хотите.просто используйте атрибуты select, join и group в вашей модели аукциона и вообще пропустите отношение.

...