【问题标题】:Yii join using CDbCriteria not showing columns from second tableYii 使用 CDbCriteria 连接不显示第二个表中的列
【发布时间】:2012-05-19 18:48:08
【问题描述】:

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

【问题讨论】:

标签: php yii


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多