CodeIgniter - 类CI_DB_mysql_result的对象无法转换为int

时间:2013-04-22 20:31:16

标签: php codeigniter-2

我有一个看起来像

的控制器
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);   

    }
}

这是一个简单的下拉视图:

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

上面的整个组合引发了一个错误'类CI_DB_mysql_result的对象无法在一行上转换为int'

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

有什么线索?

由于

1 个答案:

答案 0 :(得分:2)

你有两个问题。首先,您尝试使用数字运算符将对象与数组连接,其次,您尝试将对象用作数组。

你想要

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

错误的实际原因是+ $this->getMake()。您不能简单地在PHP中添加对象,您需要添加对象的属性或值。因为PHP不支持这个,所以它想,&#34; AH!一个+!我知道该怎么办!让我们把所有东西都变成一个数字!&#34;所以它取了getMake的结果,然后当它发现它与数字无关时非常生气。

你的第二个问题是CodeIgniter没有从get返回一个数组,它返回一个结果对象。 You can find out more about them here,但是长和短是你想在尝试将它与数组合并之前调用result