これらは私が持っているデータベーステーブルです:
旅行
- ID
- 容量
- ...
旅行登録
- ID
- 旅行ID
- ファーストネーム
- 苗字
- 電話
- ...
- 登録状態
SQL クエリ
十分な空き容量があるトリップを提供する SQL クエリが必要です。有効な登録の tripRegisteration.registerationState は ですapproved
。これはSQLクエリです:
SELECT t.*,count(*) as registeredNum
FROM trip t
left join
(select *
from trip_registeration tr
where tr.registerationState="approved"
) trlist
on t.id =trlist.tripId
group by t.id
having t.capacity>registeredNum
Yii コード
DBTrip
これは、 activerecord モデルでデータ プロバイダーを取得するための Yii PHP コードです。
public function getAvailableTripsDataProvider()
{
$criteria = new CDbCriteria();
$criteria->select = 't.*, COUNT( * ) AS registeredNum';
$criteria->join =
'left join (select *
from trip_registeration tr
where tr.applicationState="initialized"
) trlist
on t.id =trlist.tripId';
$criteria->group = 't.id';
$criteria->having = 't.capacity > registeredNum';
return new CActiveDataProvider ( 'DBTrip', array (
'criteria' => $criteria
)
}
問題
registerednNum
CGridView での値を取得でき'value' => 'var_dump($data)'
ず、対応する DBTrip 行のプロパティを表示するだけで、registeredNum
. CGridView で表示するにはどうすればよいですか?