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


Yii join using CDbCriteria not showing columns from second table

我正在使用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 检索它。