Drupal 7 db_update与foreach循环

时间:2016-05-06 15:52:29

标签: php drupal drupal-7

我有一个带有表events_times的Drupal 7站点。我需要检查数据库中是否存在任何记录。如果他们这样做我想做更新而不是插入。我一直在修改代码,但无法使其正常工作。我收到以下错误:

Fatal error: Call to undefined method UpdateQuery::values()

这是我的代码:

$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();
}

1 个答案:

答案 0 :(得分:1)

Drupal的db_update()db_insert()使用fields()方法来定义您的值应该结束的位置。要支持多个插入对象,还要通过values()方法接受值。

$query->fields(array(
  'registration_times' => $values['registration_times'],
);