Yii联接使用CDbCriteria不显示第二个表中的列

时间:2012-05-19 18:48:08

标签: php yii

我正在使用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的新手

2 个答案:

答案 0 :(得分:3)

Yii的Active Record doesn't work that way,它只能检索表模式中定义的列,而不是任意的列。

该声明有一个例外,您可能会发现它很有用 - 可以在餐厅模型上定义STAT relation来计算该餐厅中的表格,然后您就可以通过Active Record读取它。链接页面有一些很好的例子。

答案 1 :(得分:0)

您应该将餐馆模型中的属性 rowCount 定义为虚拟属性,然后您就可以通过已定义的CDBCriteria检索它。