Ich habe Drupal 7 Seite mit einer Tabelle events_times
. Ich muss überprüfen, ob einer der Datensätze in der Datenbank vorhanden ist. Wenn sie das tun, möchte ich ein Update machen und kein Einfügen. Ich habe mit dem Code herumgebastelt, kann es aber nicht funktionieren. Ich erhalte die folgende Fehlermeldung:Drupal 7 db_update mit foreach Schleife
Fatal error: Call to undefined method UpdateQuery::values()
Hier ist mein Code:
$times_values= array();
foreach ($form_state['values']['times_fieldset']['registration_times'] as $time) {
$times_values[] = array('event_id' => $eventId,
'registration_times' => $time,
'max_attendees' => 0
);
}
//Check to see if values exist in the table already
$exists = db_select('events_times','et')
->fields('et')
->condition('event_id',$event->id,'=')
->execute()
->fetchAll();
if ($exists == FALSE) {
$query = db_insert('events_times')->fields(array('event_id', 'registration_times', 'max_attendees'));
foreach ($times_values as $record) {
$query->values($record);
}
$query->execute();
}
else {
$query = db_update('events_times')->fields(array('event_id', 'registration_times', 'max_attendees'));
foreach ($times_values as $record) {
$query->values($record);
}
$query->execute();
}
Das wird in meinem $ times_values = array() gesetzt; Block? Einfügen arbeitete vor dem Hinzufügen des Aufrufs zu überprüfen, db und db_update Anweisungen – Johanna
Ich sollte klarstellen, dass das Feld registration_times ist ein Ajax hinzufügen/entfernen Formularobjekt, so dass es mehrere Datensätze gleichzeitig in der db eingefügt. – Johanna
Sie haben Recht, Einfügen akzeptiert auch Werte() als Methodenaufruf (Antwort aktualisiert). Aber das Update-Objekt hat keine Werte-Methode (siehe: https://api.drupal.org/api/drupal/includes!database!query.inc/class/UpdateQuery/7.x), also müssen Sie ersetzen die Felder in der Schleife (Sie müssen möglicherweise auch das Abfrageobjekt ersetzen Ich habe vor kurzem einen Update-Aufruf in einer Schleife versucht. – acrosman