我正在尝试使用统计查询来关联Yii中的3个表。我需要显示登录用户发布的每个请求的最低费率,其中“communications”= hai和“Country”=中国,其中通信和国家/地区是3个不同表的属性。我该如何实现呢?是否有任何方法可以在统计查询条件下添加AND / Or。我的代码如图所示..
return array(
'serviceproposals' => array(self::HAS_MANY, 'Serviceproposal', 'ServiceRequestID'),
'user' => array(self::BELONGS_TO, 'Buyer', 'user_id'),
'postCount'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID'),
'maxvalue'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID','select'=>'MAX(proposal_amount)'),
'minvalue'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID','select'=>'MIN(proposal_amount)', 'condition' => 'Communications ="hai"'),
);
数据库:
User[user_id,name,password,Country],
Provider[user_id,providercompany,providerdetails],
Buyer[user_id,contactinfo],
ServiceRequest[ServiceRequestID,Buyer.user_id,details,date],
ServiceProposal[ServiceProposalId,ServiceRequestID,Provider.user_id,services,propsal_rate,Communications]
答案 0 :(得分:0)
在Yii中,如果我们使用STAT查询,通常查询的性能会受到影响,因为STAT很慢。您可以在CDBCriteria选择选项中使用COUNT而不是添加关系,我们需要将该属性声明为模型 与Serviceproposal模型一样,您需要添加属性public $ postCount;所以你可以使用out out中的count值。