1

データベースに一度アクセスして、MySQL リソースと配列を返したいと考えています。それを行うために、コントローラーに次のコードがあります。

$result = $this->data->my_method();

$data['result_resource'] = $result;
$data['result_array']    = $result->result_array();

私の見解では、次のように呼び出しています。

$this->table->generate($result_resource);

$data['result_array']行がコメントアウトされている場合、テーブルは期待どおりに機能します (つまり、列ヘッダーが表示されます) が、行$data['result_array']がコメントアウトされていないresult_resource場合、 AND の両方result_arrayが配列になります。ここで何が起こっているのか、どうすれば回避できるのでしょうか?

$data 配列は、典型的な CI の方法でビューに渡されます。

$this->load->view('view.php', $data);

メソッドを 2 回実行すると問題は解決しますが、それは避けたいと思います。

4

1 に答える 1

0

「消費」されている result_array() に関するこのようなことはナンセンスです - それは単にまったく実行されていないオブジェクトです。何度でも使えます

table->generate() を含むコードをコントローラーに入れましたが、すべてうまくいきました。

$result は、接続リソースなどを含む基本オブジェクトであり、実際に使用したいものではありません。テーブルライブラリが設定されているため、それを渡すとresult_array()が検索されますが、実際にはこれを行う標準的な方法ではありません。

問題を引き起こしている、過去に見たコードに何か他のものがあると思います。$result コードを削除して、次のコマンドを実行してみてください:

$result = $this->data->my_method();
$data['result_array']    = $result->result_array();
var_dump($data['result_array']);
echo $this->table->generate($data['result_array']);

すべてが正常に見えることを確認します。私はあなたがいつかfacepalmをするだろうと思う:-)

于 2012-11-05T10:43:58.833 に答える