Codeigniter 2: несколько вставок и идентификатор последней вставки - PullRequest
1 голос
/ 11 декабря 2011

Имеет ли Codeigniter 2 более понятный способ сделать то, что показано в коде ниже?

Как видите, я пытаюсь вставить данные через POST в 3 отдельные таблицы, связанные друг с другом.

Как только я вставлю в table1, я хочу взять его last insert id и ввести его в качестве значения для table2_id и table3_id (внешний ключ).

Я гуглил это и это, и люди упоминали о транзакциях в БД, но мне было интересно, есть ли способ без транзакций.

Просто любопытно, будучи CodeIgniter новичком.

Вот код:

public function create()
{
    $this->load->model('table1');
    $this->load->model('table2');
    $this->load->model('table3');

//validation goes here

    $id1   = $this->table1->insert($this->input->post('table1'));

    $data2 = array_merge($this->input->post('table2'), array('table1_id' => $id1));
    $id2   = $this->table2->insert($data2);

    $data3 = array_merge($this->input->post('table3'), array('table1_id' => $id1));
    $id3   = $this->table3->insert($data3);
}

1 Ответ

1 голос
/ 22 июня 2012

У вас есть функция:

$this->db->insert_id();

что он может использоваться после вставки и дает вам идентификатор вставленных данных. Вы всегда можете добавить оператор if else, чтобы убедиться, что вы вставили данные правильно и продолжите работу с остальными вставками.

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