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);   

    }
}

还有一个视图,它是一个简单的下拉菜单:

<? 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

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

你要

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

错误的实际原因是+ $this->getMake(). 您不能简单地在 PHP 中添加对象,您需要添加对象的属性或值。因为 PHP 不支持这一点,它想,“啊!a +!我知道如何处理这些了!让我们把所有东西都变成一个数字!” 所以它接受了结果,getMake然后当它发现它与数字无关时非常生气。

您的第二个问题是 CodeIgniter 不返回一个数组,get它返回一个结果对象。您可以在此处找到有关它们的更多信息,但总而言之,您要result在尝试将其与数组合并之前调用它。

于 2013-04-22T20:43:14.467 回答