我正在尝试使用统计查询来查看在我的网站上发布的每个请求的提案数量。即,已登录用户发布的每个请求的提案数。我通过使用代码
获得所有用户的数量return array(
'serviceproposals' => array(self::HAS_MANY, 'Serviceproposal', 'ServiceRequestID'),
'user' => array(self::BELONGS_TO, 'Buyer', 'user_id'),
'postCount'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID'),
);
数据库:
网友[USER_ID,姓名,密码],
提供商[USER_ID,providercompany,providerdetails],
买家[USER_ID,CONTACTINFO],
ServiceRequest [ServiceRequestID,Buyer.user_id,细节,日期],
ServiceProposal [ServiceProposalId,ServiceRequestID,Provider.user_id,服务,propsal_rate]
邀请所有建议......
答案 0 :(得分:1)
为此,您需要将当前登录用户的user_id
传递给STAT
关系。
有两种实现方法,使用conditional query或使用Parameterized named scopes
条件查询。
渴望加载:
$obj= ServiceRequest::model()->with(array(
'postCount'=>array('condition'=>'user_id = :param',
'params' => array(':param' => $user_id))
))->findAll();
延迟加载:
$serviceRequestObject->postCount(array(
'condition'=>'user_id = :param',
'params' => array(':param' => $user_id)
));
参数化命名范围:
在你的模型中
public function postCountUser($fieldValue=5) {
$this->getDbCriteria()->mergeWith(array(
'condition' => 'user_id = :param',
'params' => array(':param' => $fieldValue)
));
return $this;
}
然后使用:
渴望加载:
ServiceRequest::model()->with('postCount')->postCountUser($user_id)->findAll();
延迟加载:
$serviceRequestObj->postCount->postCountUser($user_id);