web-dev-qa-db-ja.com

プログラムで次のnidを使用してノードを追加する方法は?

私は複数のノードを(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();
2
Sushi

この方法を試してください:

  $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を使用することもできます。

7
GwenM