2012-09-16 20 views
5

私は3つのテーブルを持っています。Codeigniter:3つのテーブルを結合して表示のデータを表示

私はアプリ私はCodeIgniterのを構築していると私は3つのテーブル

クライアントがあります。
-id
-phone_numberを
-hospital_id
-smc_status
-testing_center_id

病院
-id私が持っているビューで

public function get_clients() 
    { 
     if($slug === FALSE) 
     { 
      $this->db->select('clients.*'); 
      $this->db->from('clients'); 
      $this->db->join('hospital', 'clients.id = hospital.id'); 
      $this->db->join('testing_center', 'clients.id = testing_center.id'); 
      $query = $this->db->get(); 

      return $query->result_array(); 
     } 

     $query = $this->db->get_where('clients'); 
     return $query->row_array(); 
    } 

: -name

Testing_centerモデルで
-id
-name

、私はこれを持って

<tbody> 
    <?php foreach ($clients as $client_item): ?> 
    <tr> 
     <td><?php echo $client_item['phone_number'] ?></td> 
     <td><?php echo $client_item['smc_status'] ?></td> 
     <td><?php echo $client_item['hospital_id'] ?></td> //i wish to have the hospital name here 
     <td><?php echo $client_item['testing_center_id'] ?></td> //i wish to have the testing center name here 
     <td><?php echo $client_item['language'] ?></td> 
     <td><a href="#">View</a></td> 
    </tr> 
    <?php endforeach ?> 
</tbody> 

しかしそれはbecau私は3番目と4番目のtdに病院名と検査センター名を表示できませんでした。それについてどうすればいいですか?何らかの理由でうまくいかないようなテクニックを試しました。

$this->db->join('hospital', 'hospital.id = clients.id'); 
$this->db->join('testing_center', 'testing_center.id = clients.id'); 

これに代えて:それらが同じである場合

$this->db->join('hospital', 'clients.id = hospital.id'); 
$this->db->join('testing_center', 'clients.id = testing_center.id'); 

クライアント* *とクライアントをチェック

答えて

0

あなたはこれを試すとどうなりますかを教えてくださいどこでも

また、Ne rd提案: $ this-> db-> select( 'clients。*'); へ:

$this->db->select('*'); 
+0

ようなことsholudが、私はHTTPエラー500それはなぜあるの取得に終わりますか? – raybesiga

+0

チェックして、スペルミスをしました。助けてくれてありがとう! – raybesiga

+0

私はフォームに記入し、データを別のテーブルにプッシュしようとしています。それについてどうすればいいのですか?最初にフォームをデータベースにバインドして、結合を理解するか、データベースに予想されるものと同様の入力テキストを配置する必要がありますか? – raybesiga

3

あなただけclientsテーブルから値を選択しています。また、あなたshouldn't use SELECT *clients.*がやっている:あなたは、あなたが

<?php echo $client_item['hospital_name'] ?> 
<?php echo $client_item['testing_center_name'] ?> 

EDITしてアクセスすることができ に

$this->db->select('clients.id, 
    clients.phone_number, 
    clients.smc_status, 
    clients.language, 
    hospital.name AS hospital_name, 
    testing_center.name AS testing_center_name'); 

を他のテーブルから列を選択するだけでなく

する必要があります。私のコードを更新しました。

+0

私は変更を加えましたが、私はHTTPエラー500を取得することになります。なぜですか? – raybesiga

+0

間違ったことがいくつかあります。 PHPログを確認してください。 –

+0

私はlocalhost上で実行していますが、ログを確認することはできませんが、単に次のように変更しました: $ this-> db-> select( 'clients.id、 clients.phone_number、 clients.smc_status、 clients.language 、hospital_name AS hospital.name、testing_center_name「AS \t \t \t \t testing_center.name)。 $ this-> db-> from( 'clients'); $ this-> db-> join( 'hospital'、 'hospital.id = clients.id'); ます$ this-> DB->参加( 'testing_center'、 'testing_center.id = clients.id'); $ query = $ this-> db-> get(); return $ query-> result_array(); } $クエリ=の$ this - > DB-> get_where( 'クライアント'、配列( 'スラグ' => $スラグ))。 return $ query-> row_array(); }} – raybesiga

0

それだけでなく、あなたのように、私が最初にオタクによる勧告をすべての必要な変更を加えたこの

$this->db->join('hospital', 'clients.hospital_id = hospital.id'); 
$this->db->join('testing_center', 'clients.testing_center_id = testing_center.id'); 
+0

(「クライアントでhospital_id、病院のid」)および(「クライアントでtesting_center_id、testing_centerのid」)のように、両方のtablsで入社同じ列名と間違っがあります – Gautam3164

関連する問題