0

わかりましたので、次の SQL クエリがあります。

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

これを codeigniters アクティブ レコードに変換する必要があります。これはこれまでに得たものですが、3 つのうち 1 つのデータ エントリしか得られません。

     $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 );
4

1 に答える 1

3

挿入の前にa を実行すると、 andprint_r($movie_genre)の値が 1 つしかないことがわかります。これは、配列内の各キーに対して 1 つの値しか存在できないためです。キーごとに 3 つの値を定義しているため、以前の値は上書きされます。film_idgenre_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);
于 2013-04-14T23:18:38.313 に答える