1

我正在尝试使用统计查询获取在我的站点中发布的每个请求的提案计数。即,登录用户发布的每个请求的提案计数。我正在使用代码获取所有用户的数量

return array(
   'serviceproposals' => array(self::HAS_MANY, 'Serviceproposal', 'ServiceRequestID'),
   'user' => array(self::BELONGS_TO, 'Buyer', 'user_id'),
   'postCount'=>array(self::STAT, 'serviceproposal', 'ServiceRequestID'),
             );

数据库:
User[user_id,name,password],
Provider[user_id,providercompany,providerdetails],
Buyer[user_id,contactinfo],
ServiceRequest[ServiceRequestID,Buyer.user_id,details,date],
ServiceProposal[ServiceProposalId,ServiceRequestID,Provider.user_id,服务,propsal_rate]

邀请所有建议...

4

1 回答 1

1

为此,您需要将user_id当前登录用户的 传递给STAT关系。

有两种方法可以实现这一点,使用条件查询,或使用参数化命名范围

  1. 条件查询。

    • 急切加载:

      $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)
      ));
      
  2. 参数化命名范围:
    在您的模型中

    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);
      
于 2012-12-03T12:26:04.340 回答