我想个人计数为codeigniter中的每个用户

时间:2014-10-07 09:44:52

标签: php codeigniter count

我试图显示每个用户的所有候选人数。但它只显示总计数。显示他们上传候选人的每个用户的个人数。帮助e解决这个..我的意思是我想要查询完全。 ..谢谢提前以下是用户控制器

用户控制器:

function manage(){
  $userId = $this->phpsession->get("userId");
  $userType = $this->phpsession->get('userType');
  $date = date("Y-m-d");
  if(!$userId && !$this->phpsession->get("userType")){
  redirect(base_url());
}

$options['join'] = true;
$data['users'] = $this->user_model->GetUser($options);
$data['totalprofile'] = $this->candidate_model->GetCandidate(array("count"=>true));
$data['page_title']="User Details";

$this->layout->view("user/manage",$data);
}

候选人模特:

function GetCandidate($options = array()) {  
  if(isset($options['candidateId']))
    $this->db->where('candidateId',$options['candidateId']);

  if(isset($options['userId']))
      $this->db->where('canUserId',$options['userId']);

  if(isset($options['userBranch']))
      $this->db->where('canUserBranch',$options['userBranch']);

  if(isset($options['candidateFname']))
    $this->db->where('candidateFname',$options['candidateFname']);

  if(isset($options['candidateMname']))
    $this->db->where('candidateMname',$options['candidateMname']);

  if(isset($options['candidateLname']))
    $this->db->where('candidateLname',$options['candidateLname']);

  if(isset($options['candClient']))
    $this->db->where('candClient',$options['candClient']);

  if(isset($options['candRequirement']))
    $this->db->where('candRequirement',$options['candRequirement']);


  if(isset($options['activateddate']))
    $this->db->where('activateddate',$options['activateddate']);

  if(isset($options['limit']) && isset($options['offset']))
    $this->db->limit($options['limit'], $options['offset']);
  else if(isset($options['limit']))
    $this->db->limit($options['limit']);

  if(isset($options['join']) ){
    $this->db->select('can . * ,c.clientName,r.requirementName,r.designation,u.userName,u.userMName,u.userLName');
    $this->db->from('candidates as can');
    $this->db->join('clients as c','can.candClient=c.clientId ');
    $this->db->join('requirement as r','r.requirementId=can.candRequirement');
    $this->db->join('users as u','can.canUserId=u.userId ');
    $this->db->order_by("candidateId", "desc");
    $query = $this->db->get();

    if(@$options['candidateId']) return $query->row(0);
    return $query->result();
  }
  $this->db->order_by("candidateId", "desc");

  $query = $this->db->get('candidates');

  if(isset($options['count'])) return $query->num_rows();

  if(@$options['candidateId']) return $query->row(0);

  return $query->result();

}

用户视图:

<th style="width: 5px">UID</th>    
<td><?php echo $totalprofile; ?>      

2 个答案:

答案 0 :(得分:0)

$this->db->order_by("candidateId", "desc");
   // Add a Where condition to get results only for selected user
   $this->db->where('UserId', XXXXX);
$query = $this->db->get('candidates');

添加where条件只会导致该用户的行

答案 1 :(得分:0)

以下代码可能有用。我没有编写完整的代码,只是编写了所需的代码。

控制器中的代码 -

function manage(){
  $options['join'] = true;
  $data['users'] = $this->user_model->GetUser($options);
  $data['totalprofile'] = $this->candidate_model->GetCandidate(array("count"=>true));
}

因为你没有为&#34; GetUser&#34;编写代码。函数,我假设它会得到一些数组。让我们将它存储在$ options中。

模型中的代码 -

function GetCandidate($options){
  $can = array();
  foreach($options as $key => $value){
     $conditions = array('canUserId'=>$value['userId'], 'canUserBranch'=> $value['userBranch']);  // put the array of conditions
     $this->db->select('*');
     $this->db->from('candidates');
     $this->db->where(array('', $conditions)); 
     $can[$value['userId']] = $this->db->get()->num_rows(); // use userId as key here as you will be able to access the count array element in view page using this keys
  }
  return $can;
}

视图中的代码 -

foreach($users as $key => $value){
    echo "User Id: "$value['userId'].", Candidate Count per user: ". $totalprofile[$value['userId']];
}

只需使用上面的代码并告诉我您的反馈意见。