3

モデル内のメソッド:

    public function get_fichas(){

    $query = $this->db->query("SELECT * FROM fichas;");

    return $query->result();

}

次に、このデータをコントローラーに渡そうとしています。コントローラーのメソッド:

public function listar_fichas(){

    $data['fichas_info'] = $this->fichas_model->get_fichas();
    $this->load->view('templates/header');
    $this->load->view('fichas/listar_fichas', $data);

}

ビュー内のデータを一覧表示しようとすると、次のエラーが発生します。

「致命的なエラー: タイプ stdClass のオブジェクトを配列として使用できません」

ここに私がリストしようとしている方法があります:

ファイルを閲覧する:

<?php foreach($fichas_info as $row){?>
    <table>
        <tr>
            <td><?php echo $row['cod_produto'] ;?></td>
            <td><?php echo $row['nome_produto'] ;?></td>
            <td ><?php echo $row['versao'];?></td>
        </tr>
    </table>
<?php }?>

ビューで何か間違ったことをしていると思います。おそらく、データを間違ってビューに渡しています。誰かが私が間違っていることを教えてもらえますか? ありがとうございました!

4

5 に答える 5

8
<td><?php echo $row['cod_produto'] ;?></td>
<td><?php echo $row['nome_produto'] ;?></td>
<td><?php echo $row['versao'];?></td>

次のようにする必要があります。

<td><?php echo $row->cod_produto ;?></td>
<td><?php echo $row->nome_produto ;?></td>
<td ><?php echo $row->versao;?></td>

結果セットはオブジェクトであるため、各列名はオブジェクトのプロパティです。配列のインデックスとしてそれらにアクセスしていました。

于 2013-03-06T12:04:38.210 に答える
6

結果をオブジェクトとしてフェッチしていますが、データに配列としてアクセスしようとしています。これを解決するには、いくつかの方法があります。

foreach ループを次のように変更して、引き続きビュー内のデータにアクセスします。

    <?php foreach($fichas_info as $row) { ?>
        <table>
            <tr>
                <td><?php echo $row->cod_produto; ?></td>
                <td><?php echo $row->nome_produto; ?></td>
                <td><?php echo $row->versao; ?></td>
            </tr>
        </table>
    <?php endforeach; ?>

これにより、オブジェクト内のデータにアクセスできます。もう 1 つのオプションは、モデルの get_fichas() 関数を変更して、結果を配列として返すことです。result() 関数を使用する代わりに、result_array() 関数を使用できます。デモンストレーションするには:

    public function get_fichas(){
        $query = $this->db->query("SELECT * FROM fichas;");
        return $query->result_array();
    }

これにより、オブジェクトではなく配列がコントローラーに返されます。その後、他の配列と同じように、ビューでこの配列をループできます。

CodeIgniter でクエリ結果を生成する方法の詳細については、http://ellislab.com/codeigniter/user-guide/database/results.htmlを参照してください。

于 2013-03-06T17:47:50.490 に答える
2

結果をオブジェクトとして取得しているため。したがって、ビューではこのように使用する必要があります。

<?php foreach($fichas_info as $row){?>
<table>
       <tr>
        <td><?php echo $row->cod_produto ;?></td>
         <td><?php echo $row->nome_produto ;?></td>
        <td ><?php echo $row->versao;?></td>
      </tr>
      </table>
      <?php }?>
于 2013-03-06T12:05:59.110 に答える
0

これが必要だと思います:

<?php foreach($fichas_info as $row){?>
<table><tr>
    <td><?php echo $row->cod_produto ;?></td>
     <td><?php echo $row->nome_produto ;?></td>
    <td ><?php echo $row->versao;?></td>
</tr></table>
<?php }?>
于 2013-03-06T12:11:29.983 に答える