2011-12-03 36 views
1

私のCodeIgniterプロジェクトでは、プロジェクトのリストを取得してページに出力しています。ただし、そのページの列の1つのデータは、プロジェクトIDを使用してDB内の別のテーブルから取得する必要があります。誰でも私がどのようにそれを行うことができるか把握するのを手伝ってもらえますか?基本的には、プロジェクトIDを指定している別のテーブルに別のクエリーを作成する必要がありますが、実際にCodeIgniterを使用してそれを行う方法はわかりません。データベースからデータを取得するCodeIgniter

function get_projects_list($page, $limit){ 
     $sql = sprintf("SELECT * FROM Project WHERE deleted != 1 LIMIT %d, %d", ($page-1)*$limit, $limit); 
     $query = $this->db->query($sql); 
     return $query->result(); 
    } 

そして、私は次の関数呼び出しコントローラで:

$projects_list = $this->Project_management_model->get_projects_list($curPage, self::$LIMIT_PER_PAGE); 

     $data['projects_list'] = $projects_list; 
     $data['cur_page'] = $curPage; 
     $data['page_count'] = $pageCount; 

     $this->load->view('project_management_view', $data); 
私は次の関数とプロジェクトのリストを取得していたモデルで

UPDATE

そして、私はforeachを使って$データを実行し、その結果をテーブルに一覧表示します。そのテーブルには、その行のプロジェクトのIDに基づいて別のテーブルの結果を表示する必要がある列があります。

ありがとうございます。

+0

あなたはcodeigniterの 'subquery'について知りたいですか? –

答えて

0

私は実際にカスタムヘルパーでこれを行う方法を見つけました。新しいヘルパーを作成してコントローラにロードすると、そのヘルパーの関数をビューで使用するオプションが与えられます。

ありがとうございました。

+0

あなたは他の回答よりも自分の答えを受け入れているので、少なくとも非常に具体的で、自分が行ったことを正確に示すことができますか?このようにして、あなたの質問は他の人にもっと役立ちます。ありがとうございました。 – Sparky

0
public function get data() 
{ 
    $this->db->flush_cache(); 
    $query = $this->db->get('project_table'); 
    $result = $query->result(); 
    $data = array(); 
      for ($i = 0;$i < count($result);$i++) 
     { 
       $data[$i] = $result[$i]; 
       $data[$i]['project_data'] = temp($result[$i]->id); 
     } 
     return data; 
} 

private function temp($id = 0) 
{ 
$this->db->flush_cache(); 
$this->where('id',$id); 
$query = $this->db->get('project_table2'); 
$result = $query->result(); 
if (count($result) != 0) 
return $result[0]->data; 
} 

このようなことによってやってもいいし、データベースのクエリ機能でサブクエリを使うこともできます。

+0

質問を更新しました。 – cycero

0

ActiveRecordを使用しているかどうかは言及していません。私はあなたがいると仮定しています。また、あなたがする必要があることはJOINを使うことです。

あなたがまっすぐにSQLを使用していた場合、あなたはこのようになります。そのいくつかのSQLを使用してこれを行うだろう:任命におけるユーザIDに基づいて、ユーザーテーブルからユーザーの名前を引っ張るだろう

SELECT a.appointment_time, u.user_real_name FROM appointment a, site_user u WHERE u.site_user_id = a.user_id; 

クエリ結果に予定時間を入力します。 ActiveRecordのを使用して

は、あなたがこのようなものだろう:

$this->db->select('appointment_time,user_real_name')->from('appointment')->join('site_user', 'site_user_id=appointment_user_id'); 

をしかし、なぜ、あなたは私達にあなたの質問についてもう少し教えていません。具体的には、他のテーブルのこの列を最初のテーブルの行に関連させますか?もしそうなら、私のJOINの提案が必要です。

+0

質問を更新しました。 – cycero

+0

JOINが本当に必要なものかもしれないというあなたのアップデートに基づいて私は私に見えます。残念ながら、私はまだ何をしようとしているのか不明確です。 3つの列の名前を教えてもらえますか? 1.あなたが必要とする列の名前は、他の表( 'table'''列の形式)から何か2.最初の表のidを持つ列の名前は何ですか(同じ形式) 、3.他のテーブルのID列の名前は(他の回答と同じ形式で)何ですか? –

関連する問題