ノードの分類を設定するのにいくつかの問題が発生しました。現在、私はこのコードを使用しています。
$node = Node::create(array(
'type' => 'detailseite',
'title' => $data[$headlineIndex],
'langcode' => 'de',
'uid' => '1',
'status' => 1,
'field_headline' => $data[$headlineIndex],
'field_intro' => $data[$introIndex] . $categories[$data[$categoryIndex]],
'created' => $data[$dateIndex],
'field_autor' => $data[$autorIndex],
'field_teaser_text' => $data[$shortIndex],
'field_fields' => array(),
));
$node->save();
これまでのところうまくいきます(「詳細」のフィールドの画像の下)。
すべてが正しく設定され、正しく動作する管理領域で新しく作成されたノードを見つけることができます。次に、分類法へのエンティティ参照である「field_meldungstyp」を設定する必要があります。
これにはすでに3つのエントリが含まれています。
プログラムで作成したノードを取得して、 "field_meldungstyp"を "Meldungstyp" -Vocabularyの "Artikel"に設定します。
私はすでに追加しようとしました:
'field_meldungstyp' => array( 'tid' => 19 ),
19は、前述の語彙の「Artikel」のtidです。そして、それは私が行き詰まっているところです。また、https://www.drupal.org/node/2402811が機能しませんでした。と同様
$node->field_meldungstyp[$node->language][]['tid'] = 19;
どちらも動作しませんでした。
単に追加する
$node = Node::create(array(
...
'field_meldungstyp' => 19,
...
));
次のエラーでクラッシュします:
Drupal \ Core \ Entity \ EntityStorageException:SQLSTATE [HY000]:一般エラー:1366不正な整数値:行1の列 'created'の 'datetime':INSERT INTO {taxonomy_index}(nid、tid、status、sticky、created)VALUES (:db_insert_placeholder_0、:db_insert_placeholder_1、:db_insert_placeholder_2、:db_insert_placeholder_3、:db_insert_placeholder_4); Drupal \ Core \ Entity \ Sql \ SqlContentEntityStorage>の配列([:db_insert_placeholder_0] => 343 [:db_insert_placeholder_1] => 19 [:db_insert_placeholder_3] => 0 [:db_insert_placeholder_4] => datetime) save()(core / lib / Drupal / Core / Entity / Sql / SqlContentEntityStorage.phpの行770)。Drupal \ Core \ Database \ Statement-> execute(Array、Array)(Line:610)Drupal \ Core \ Database \ Connection-> query( 'INSERT INTO {taxonomy_index}(nid、tid、
12345
に19
応じて交換しました;))でも多少クラッシュしますDrupal\Core\Entity\EntityStorageException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'datetime' for column 'created' at row 1: INSERT INTO {taxonomy_index} (nid, tid, status, sticky, created) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4); Array ( [:db_insert_placeholder_0] => 188 [:db_insert_placeholder_1] => 19 [:db_insert_placeholder_2] => ... in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save()