2013-02-11 68 views
1

我对统计查询的尝试不起作用。从ModelA中的视图中,我试图查询ModelB以查找ModelB中属性Number的总数,其中状态等于'D',AttributeB等于登录用户。Yii中的统计查询

的关系:

enter image description here

关系查询学尝试:

'total' => array(self::STAT, 'TableB', 'TableAId', 'select'=>'SUM(Number)', 
      'condition'=>'Status="D" AND AttributeB='.Yii::app()->user->id), 
+0

你有什么错误? – darkheir 2013-02-11 22:26:41

+0

它返回一个零值,它不在db – enfield 2013-02-11 22:35:06

+0

'TableBId'实际上应该是外键,我猜你在这种情况下是'TableAId',所以试着用'TableAId' – 2013-02-12 02:08:45

回答

0

当您指定relations(),确保任何关系定义的第三个参数是国外键与两个表相关。

在您的情况下,与TableA和TableB相关的外键是TableAId(TableB中的列),而不是TableBId。因此,你的关系定义改成这样:

'total' => array(self::STAT, 'TableB', 'TableAId', 'select'=>'SUM(Number)', 
    'condition'=>'Status="D" AND AttributeB='.Yii::app()->user->id), 

The guide解释这一点,等等。

+0

对不起现有的代码在我的应用程序中使用TableAId,这是一个印刷错误。我在我的问题中纠正了它。使用上面的代码,虽然代码输出“0” – enfield 2013-02-13 11:03:51

+0

是否启用了SQL日志记录?是预期的SQL执行? – 2013-02-13 11:19:52