CodeIgniter中的多个ActiveRecord查询

时间:2012-02-06 19:14:58

标签: codeigniter activerecord

我想做以下事情:

//set up insert....
$this->db->insert('property');
$id = $this->db->insert_id();
//some stuff
//set up get
$this->db->where('id', $id);
$id = $this->db->get();

这不起作用。看起来插入没有在get之前执行 - get返回零行。插入物(最终)起作用。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你错过了一个论点 - insert()需要两个:

  1. 表名
  2. 包含列和值的数组或对象
  3. From the documentation

    $data = array(
       'title' => 'My title' ,
       'name' => 'My Name' ,
       'date' => 'My date'
    );
    
    $this->db->insert('mytable', $data); 
    
    // Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date')
    

    因此,您需要通过将数组或对象包含为第二个参数来为insert()提供必要的数据。

    修改

    或者,您可以使用$this->db->set()方法设置值,如Rocket's more comprehensive answer中所述,这也指出您在选择数据时需要指定一个表。

答案 1 :(得分:2)

您需要提供insert一些要插入的数据。

使用set方法:

$this->db->set('name', 'Eric');
$this->db->insert('property');

或将数组作为第二个参数传递:

$this->db->insert('property', array(
   'name' => 'Eric'
));

因为,对于你的选择,你需要告诉它选择哪个表。

使用from方法:

$this->db->from('property');
$this->db->where('id', $id);
$id = $this->db->get();

或将get表作为参数传递:

$this->db->where('id', $id);
$id = $this->db->get('property');

另请注意,get()返回查询对象。您需要使用->row(或->result)来获取数据。

$this->db->from('property');
$this->db->where('id', $id);
$query = $this->db->get();
$id = $query->row()->id;