Несколько запросов ActiveRecord в CodeIgniter - PullRequest
1 голос
/ 06 февраля 2012

Я хочу сделать следующее:

//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 ]

2 голосов
/ 07 февраля 2012

Вам нужно дать 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;
2 голосов
/ 07 февраля 2012

Вам не хватает аргумента - insert() принимает два:

  1. Имя таблицы
  2. Массив или объект, содержащий столбцы и значения

Из документации :

$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() для установки значений, как описано в Более подробный ответ Ракеты , который также указывает на то, что вам нужно указатьтаблица при выборе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...