0

次のようなコントローラーがあります

class Products extends CI_Controller    {

    public function __construct(){
        //
        parent::__construct();
    }   

    public function index() {
        //
        $this->load->model('products_model');
        $data = $this->products_model->getProducts();

        $this->load->view('products',$data);    
    }

}

そしてActive Recordを使ったモデル

class Products_model extends CI_Model {

    private function getMake()
    {
        $this->db->order_by('make');
        return $this->db->get('manufacturer');
    }

    public function getProducts() {

        $meta_title = "Meta Title";
        $meta_keywords = "keywords";
        $meta_description = "Page description"; 

        $make = array('' => 'Select a make')+$this->getMake();      

        return array("make" => $make, "meta_title" => $meta_title,"meta_keywords" => $meta_keywords,"meta_description" => $meta_description);   

    }
}

そして、make の単純なドロップダウンであるビュー:

<? echo form_dropdown('make',$make,$this->input->post('make')); ?>

上記の組み合わせ全体で、行に「クラス CI_DB_mysql_result のオブジェクトを int に変換できませんでした」というエラーがスローされます

$make = array('' => 'Select a make')+$this->getMake();  

理由はありますか?

ありがとう

4

1 に答える 1

2

2 つの問題があります。まず、数値演算子を使用してオブジェクトを配列と連結しようとしています。次に、オブジェクトを配列として使用しようとしています。

あなたがしたい

array_merge(array(''=>'Select a make'), $this->getMake()->result());

エラーの実際の原因は+ $this->getMake(). オブジェクトのプロパティまたは値を追加する必要があります。PHP はこれをサポートしていないため、「ああ、ああ、これ+をどうすればいいのかわからない! すべてを数値にしよう! 」と考えました。そして、それがgetMake数字とは関係のないものであることがわかったとき、それは非常に怒っていました。

2 番目の問題は、CodeIgniter がget結果オブジェクトを返す配列を返さないことです。詳細については、こちらを参照してください。ただし、長いものと短いものはresult、配列とマージする前に呼び出す必要があります。

于 2013-04-22T20:43:14.467 に答える