2017-07-21 8 views
1

ビデオテーブルからuserIdのリストを取得しようとしています。この表には、ユーザーにアップロードされるメディアファイルが含まれています。これは私のコードですCodeigniter group_byが正しく動作しない

 $this->db->select("videos.user_id as userId"); 
     $this->db->limit('10', $document['offset']); 
     $this->db->group_by('userId'); 
     $this->db->order_by('id','desc'); 

     $recentUploads = $this->db->get('videos')->result_array(); 
     if (!empty($recentUploads)) 
     { 
      foreach ($recentUploads as $record) 
      { 
       $totalPostMedia = $obj->totalPostMedia($record); 
       $record['totalPostMedia'] = $totalPostMedia; 

       $resData = $this->db->select("username, profileImage")->from('users')->where('id', $record['userId'])->get()->row_array(); 
       $record['uploadBy'] = $resData['username']; 
       $record['profileImage'] = "http:...com/profileImage/".$resData['profileImage']; 

       $Mydata[] = $record; 
      } 
     } 

結果getは、テーブルからuserIdsの一部が欠落しています。私は$this->db->distinct()も試しました。それでも同じ結果が得られました。重複のない結果が得られる唯一の方法は、$this->db->order_by('id','desc');を削除するか、descの代わりにascにすることです。しかし、私はテーブルから最新のレコードを取得したい。どうすればいい?何か間違っているのですか?どんな助けでも大変に感謝します。

+0

最初に書くために働くために、このようになります - >ます$ this-> DB-> ORDER_BY( 'ID'、 'DESC'); これより $ this-> db-> group_by( 'userId'); –

+0

それを試してみました。まだ運がない。 –

+0

ここに結果をアップロードして見せることができます –

答えて

1

はあなたのuserIdがtraitementでグループをやって作るGROUP_BYのLIGNEに(私はのuserIdとしてvideos.user_id選択を意味する)あなたの要求でこの

$this->db->select("videos.user_id as userId"); 
$this->db->from("videos"); 
$this->db->group_by('userId'); 
$this->db->order_by('id','desc'); 
$this->db->limit('10', $document['offset']); 

$recentUploads = $this->db->get()->result_array(); 
if (count($recentUploads)>0) 
{ 
    foreach ($recentUploads as $record) 
    { 
     $totalPostMedia = $obj->totalPostMedia($record); 
     $record['totalPostMedia'] = $totalPostMedia; 

     $resData = $this->db->select("username, profileImage")->from('users')->where('id', $record['userId'])->get()->row_array(); 
     $record['uploadBy'] = $resData['username']; 
     $record['profileImage'] = "http:...com/profileImage/".$resData['profileImage']; 

     $Mydata[] = $record; 
    } 
} 
1

を試してみてください。あなたのuserIdエイリアスは、その慣習を行うことができるカラム名として知られていません。

あなたのグループのvideos.user_idでuserIdをligneに置き換えます。

あなたのコードは、あなた

$this->db->select("videos.user_id as userId"); 
    $this->db->limit('10', $document['offset']); 
    $this->db->group_by('videos.user_id'); 
    $this->db->order_by('id','desc'); 

    $recentUploads = $this->db->get('videos')->result_array(); 
    if (!empty($recentUploads)) 
    { 
     foreach ($recentUploads as $record) 
     { 
      $totalPostMedia = $obj->totalPostMedia($record); 
      $record['totalPostMedia'] = $totalPostMedia; 

      $resData = $this->db->select("username, profileImage")->from('users')->where('id', $record['userId'])->get()->row_array(); 
      $record['uploadBy'] = $resData['username']; 
      $record['profileImage'] = "http:...com/profileImage/".$resData['profileImage']; 

      $Mydata[] = $record; 
     } 
    } 
関連する問題