私は複数のノードを(csvファイルから)作成したいのですが、csvはうまく読み込まれ、テーブルnode
には(nid
が1から170までの)古いレコードがたくさん含まれています。テーブルnode
の最後のノードから始まるnidを持つcsvの新しいノード(新しいノードはnidの171から始まります)私はdb_last_insert_id()
を試しましたが、成功しませんでした。
これは私の db_merge
一部:
$nodes = db_merge('node')
->key(array('nid' => last_insert_id()))
->fields(array(
'type' => 'livre',
'uid' => 1,
'status' => 1,
'comment' => 1,
'promote' => 0,
'title' => $new_array['titre_csv']<===from csv
))
->execute();
この方法を試してください:
$node = new stdClass();
$node->title = $new_array['titre_csv'];
$node->type = "livre";
node_object_prepare($node); // Sets some defaults. Invokes hook_prepare() and hook_node_prepare().
$node->language = LANGUAGE_NONE; // Or 'fr' in your case
$node->uid = $user->uid;
$node->status = 1; //(1 or 0): published or not
$node->promote = 0; //(1 or 0): promoted to front page
$node->comment = 1; // 0 = comments disabled, 1 = read only, 2 = read/write
$node = node_submit($node); // Prepare node for saving
node_save($node);
//save the other table
カスタムテーブルに保存する場合は、db_insertまたはEntityFieldQueryを実行できます。
その場合、node_saveを実行した後に$ node-> nidの値が取得されます(node_saveを使用して保存した後に実行します)。
テーブルにhook_schemaを使用することもできます。