Update Node mit multiple Taxonomy terms

am 31.05.2013 - 13:07 Uhr in
Ich habe ein Modul geschrieben, dass zunächst alle Werte eines Taxonomy Refrence Feldes löscht. Das Feld ist also anschließend leer.
Nun möchte ich neue Werte, und zwar mehrere hinzufügen.
foreach($termids as $termid){
$fieldname = 'feldname';
$fieldtable = 'field_data_fieldname';
$key = db_query("SELECT * FROM {$fieldtable} WHERE entity_id = :eid", array(':eid' => $nid))->rowCount(); //$nid ist bekannt!!!
$node->$fieldname = array(
'und' => array(
$key => array(
'tid' => $tid,
),
),
);
node_save($node);
$node = node_load($nid);
}
Die Schleife wird komplett durchlaufen. Allerdings wird lediglich der letzte Wert in das Feld geschrieben und nicht alle (mehrere) Werte wie erwartet. Das Feld an sich kann eine unbegrenzte Anzahl von Werten aufnehmen. Der $key wird nicht gesetzt. Wenn ich das debugge, steht für den $key immer eine 0.
Wie schaffe ich es in einem Feld mehrere Werte einzusetzen und den Node dann zu speichern?
Es geht hierbei nicht darum einen node zu erzeugen, sondern einen node zu bearbeiten.
Nachdem ich jetzt tagelang das Netz durchforstet habe, bin ich für jede Hilfe dankbar!!!
- Anmelden oder Registrieren um Kommentare zu schreiben
Ich vermute es liegt an der
am 31.05.2013 - 15:04 Uhr
Ich vermute es liegt an der deiner foreach Schleife
Du gehst alle Terms durch und speicherst immer jeden einzelnen in die Node.
Durch das node_save() werden dann die alten Terms aus der Node natürlich gelöscht und
am Ende bleibt der letzte stehen !
Am besten erstmals alles sammeln und dann einmal am Ende speichern.
Hier mal ein ungetestetes Beispiel.
$fieldname = 'feldname';
$keys = array();
foreach($termids as $termid) {
$keys[] = array( 'tid' => db_query("SELECT * FROM field_data_fieldname WHERE entity_id = :eid", array(':eid' => $nid))->rowCount() );
}
$node->$fieldname = array(
LANGUAGE_NONE => $keys
);
node_save($node);
Ich vermute es liegt an der
am 31.05.2013 - 15:03 Uhr
# Doublepost
kannst du das nicht einfacher
am 31.05.2013 - 15:42 Uhr
kannst du das nicht einfacher mit views_bulk_operations machen?
[geloest]
am 31.05.2013 - 15:45 Uhr
DANKE!!! Das Wochende kann kommen :-)))
Es lag am Aufbau des Arrays.