0

我正在使用CDbCriteria加入两张桌子餐厅和桌子。一家餐厅可以有多张桌子。我想获取餐厅列表以及该特定餐厅的餐桌数量。

我正在使用以下代码:

$criteria = new CDbCriteria();
$criteria->select = "t.*, COUNT(t2.id) as rowCount";
$criteria->group = "t2.restaurantId";
$criteria->join = "LEFT JOIN {{tables}} t2 ON t.id = t2.restaurantId";
$criteria->condition = "t.clientId = ".Yii::app()->user->clientId;
$restaurants = Restaurants::model()->findAll($criteria);

当我尝试显示它的值时,rowCount它正在显示Property "Restaurants.tableCount" is not defined。另外请告诉我这是否是在 Yii 中做事的正确方法,因为我是 Yii 新手

4

2 回答 2

3

Yii 的 Active Record不是这样工作的,它只能检索表模式中定义的列,而不是任意的列。

该语句有一个例外,您可能会发现它很有用 - 可以在 Restaurant 模型上定义一个STAT 关系来计算该餐厅中的桌子数,然后您将能够通过 Active Record 读取它。链接页面有几个很好的例子。

于 2012-05-19T19:07:53.960 回答
0

您应该将Restaurants模型中的属性rowCount定义为虚拟属性,然后您将能够通过您定义的 CDBCriteria 检索它。

于 2014-04-15T05:02:38.617 回答