我有一个看起来像
的控制器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();
有什么线索?
由于
答案 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
。