1

私のモデルでは、次のように書きました。

$criteria->select =  ' ( select avg( IfNULL( TR.stars_rating_type_id , 0) ) as stars_rating_type_id from '.$tablePrefix.'tour_review as TR where TR.tour_id = T.id and TR.status = \'A\' ) as reviews_avg_rating ';

そして、私はエラーが発生します:

アクティブなレコード「Tour」が無効な列を選択しようとしています「( select avg( IfNULL( TR.stars_rating_type_id」. 列はテーブルに存在するか、エイリアスを持つ式である必要があります。

The reason is that I add "IfNULL( ..., 0)" function in subquery to escape "null" in result set.

それがなければ、追加の検証を行い、null の場合は 0 を設定する必要があります。

生のSQLをテストすると" SELECT ( select avg( IfNULL( TR.stars_rating_type_id, 0) ) as stars_rating_type_id..."問題なく動作するので、それはyii側の問題です。それを修正する方法?

Yii 1.1.14
ありがとう!

4

1 に答える 1