0

データベースからデータをループするとき、再度クエリを実行するには、その値が必要です。ビューから直接データベースにクエリを実行します。私のコードが間違っていることを知りたいですか?間違っている場合、より良い方法は何ですか?

    foreach($data->result() as $row1) {
        echo '<li>';
        echo $row1->Name;
        echo '<ul>';     
        $this->db->select('Photo');
        $this->db->from('tblPhoto');
        $this->db->where('User_id', $row1->User_id);
        $photo = $this->db->get();
        foreach($photo->result() as $row2) {
            echo '<li>';
            echo $row2->Photo;
            echo '</li>';
        }
        echo '</ul>';
        echo '</li>';
    }
4

4 に答える 4

3

あなたが行っている方法は機能しますが、コードをより再利用しやすくするために、コードを分離することを検討することをお勧めします。例えば:

<~~~~コントローラー~~~~~>

// your_controller.php:     
$this->load->model('your_model');
$data = $this->your_model->get_data();
foreach($data as $key => $obj)
{
    $data[$key]->photos = $this->your_model->get_photos($obj->User_id);
}
$this->load->view('test', array('my_data' => $data));

<~~~~モデル~~~~~>

// your_model.php
function get_data()
{
    return $this->db->get('yourTable')->result();
}

function get_photos($user_id)
{
    return $this->db->get_where('tblPhoto', array('User_id' => $user_id))->result();
}

<~~~~ビュー~~~~~>

your_view.php
<?php foreach($my_data as $row1): ?>
<li>
    <?php echo $row1->Name;?>
    <ul>
        <?php foreach($row1->photos as $row2): ?>
            <li><?php echo $row2->Photo; ?></li>
        <?php endforeach; ?>
    </ul>   
</li>
<?php endforeach; ?>
于 2013-08-21T12:16:08.663 に答える
1

@lyhong、あなたのコードはプログラム的に正しいです。

ただし、Codeiginter MVC 標準を使用することをお勧めします。

クエリはモデルに存在する必要があります。

それらが再利用可能になるように。

ビューに記述されたクエリは、そのビューのみを提供します。

また、ビュー ファイルにクエリを書き込むと、次の問題が発生するはずです。

  • エラーが表示されない場合は $row1->User_id 、ページに直接表示する必要があります。

また、ビュー ファイルの読み込みが遅くなります。

MVC 標準に固執する利点は、大きな拡張性です。

于 2013-08-21T11:04:41.003 に答える