我正在使用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 的新手
Yii 的活动记录不是这样工作的,它只能检索在表模式中定义的列,而不是任意的列。
该语句有一个例外,您可能会发现它很有用 - 可以在餐厅模型上定义 STAT 关系以计算该餐厅的餐桌,然后您将能够通过活动记录读取它。链接的页面有几个很好的例子。
您应该将餐厅模型中的属性 rowCount 定义为虚拟属性,然后您将能够通过您定义的 CDBCriteria 检索它。