私のモデルでは、次のように書きました。
$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
ありがとう!