2013-04-14 2 views
0

Итак, я следующий запрос SQL:Codeigniter активная запись проблема

INSERT INTO film_genre 
    (film_id, genre_id) 
VALUES 
    (1, 1), 
    (1, 2), 
    (1, 3) 

Мне нужно преобразовать это в codeigniters активных записей, и это то, что я до сих пор, но я получаю только запись данных одного из трех :

 $movie_genre = array(
      'film_id' => $movies['id'], 
      'genre_id' => 1, 
      'film_id' => $movies['id'], 
      'genre_id' => 2, 
      'film_id' => $movies['id'], 
      'genre_id' => 3, 
      ); 

$this->db->insert('film_genre', $movie_genre); 

ответ

3

Если выполнить print_r($movie_genre) перед вашей вставкой вы увидите, что есть только одно значение для film_id и genre_id. Это связано с тем, что для каждого ключа в массиве может быть только одно значение. Вы определяете три значения для каждого ключа, поэтому ваши более ранние значения переписываются.

Если вы отформатируете массив следующим образом, вы можете использовать метод insert_batch. См. Полное описание метода на http://ellislab.com/codeigniter/user-guide/database/active_record.html

$records = array(
    array('film_id' => 1, 'genre_id' => 1), 
    array('film_id' => 1, 'genre_id' => 2), 
    array('film_id' => 1, 'genre_id' => 3) 
); 

$this->db->insert_batch('film_genre', $records); 
+0

Работает как очарование. благодаря –

Смежные вопросы