Ich habe die Auswahlmöglichkeiten für Umfragen programmgesteuert in Drupal 8 gespeichert. Ich habe das Modul zur Auswahl von Umfragen für Drupal8 verwendet.
$node_poll = Poll::load($pollid);
//print_r($node_poll);exit;
$i = array(13,14,15);
foreach($i as $key => $value){
$node_poll->choice->setValue(
[
['target_id' => $value]
]
);
// But I want to save multiple target ids. now this is saving 15 all the time.
}
$node_poll->question->setValue([
'value' => 'test',
]);
$node_poll->save();
Das folgende Snippet funktioniert einwandfrei.
$node_poll->choice->setValue(
[
['target_id' => 13]
],
[
['target_id' => 14]
],
[
['target_id' => 15]
]
);
Wie kann ich festlegen, dass Ziel-IDs dynamisch gespeichert werden?
Antworten:
Ich würde Ihren Code so umschreiben.
NB: Dies ist eine bearbeitete Version der ursprünglichen Antwort, die einige hilfreiche Punkte aus den Kommentaren enthält.
Hoffe das macht es!
quelle
Sie können mit mehrwertigen Feldern wie einem Array arbeiten. Die Feldschnittstelle übersetzt dies, um es in der Datenbank zu speichern. Um es noch weiter zu vereinfachen:
Dadurch werden die IDs zum Feld hinzugefügt und die vorhandenen nicht überschrieben. Wenn Sie dies tun möchten, können Sie am Anfang ein leeres Array festlegen.
quelle