我正在使用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的新手
答案 0 :(得分:3)
Yii的Active Record doesn't work that way,它只能检索表模式中定义的列,而不是任意的列。
该声明有一个例外,您可能会发现它很有用 - 可以在餐厅模型上定义STAT relation来计算该餐厅中的表格,然后您就可以通过Active Record读取它。链接页面有一些很好的例子。
答案 1 :(得分:0)
您应该将餐馆模型中的属性 rowCount 定义为虚拟属性,然后您就可以通过已定义的CDBCriteria检索它。