четверг, 26 апреля 2012 г.

Drupal - вставка или обновление записей (insert or update)

Выполнить такой запрос в drupal достаточно просто, нужно лишь знать как использовать db_merge()

<?php
db_merge
('history_all')
  ->
key(array('entity_id' => $entity_id))
  ->
fields(array(
     
'entity_id' => $entity_id,
     
'views' => $views,
  ))
  ->
execute();?>


Вставка или обновление записей в таблице history_all, если существует запись с entity_id равным $entity_id, то эта запись будет обновлена и поля entity_id и views будут обновлены, если же записи с entity_id равным $entity_id нет, то будет добавлена новая запись с полями entity_id и views.

Если нужно вставить одни поля, а обновлять другие, то можно расширить конструкцию:

<?php
db_merge
('history_all')
  ->key(array('entity_id' => $entity_id))
  ->
fields(array(
     
'entity_id' => $entity_id,
      'views' => 0,
  ))
  ->
updateFields(array(
   
'views' => $views,
  ))
  ->
execute();?>


Думаю всё понятно =)

Подробнее о merge queries.