Drupal: добавить или обновить запись в таблице с учетом primary key средствами db_merge()

Итак, сколько смотрел и читал русскоязычных сайтов вокруг да около Друпала по теме автоматического обновления или добавления записи в таблицу с учетом наличия у последней primary-кеев, везде было одно и тоже: либо примеры использования drupal_write_record() (кот. совершенно негоден для практического применения в рассматриваемом случае, т.е. он как бы работает, но очень криво, приходится изворачиваться), либо никчемный пример с db_merge() без учета уже упомянутой особенности, — по-видимому люди просто скопипастили отрывки официальной документации, да и то криво.

Ниже представляю читателям решение вроде бы несложного, но весьма запутанного вопроса.

Описание:

Дана таблица с одним первичным ключом (primary key) следующей структуры:

Drupal обновить или добавить запись в таблице с db_merge()

Задача. Если нет записи с заданным id, то создать, иначе просто её обновить (в смысле существующую запись) на Drupal 7 Database API.

Решение:

<?php
// Поля таблицы abcrop_pictures:
$abcrop_fields = array(
    'id' => $id,
    'coords' => serialize($additional_picture),
    'fid' => $file->fid
);
// Выполняем SQL запрос на Drupal Database API:
db_merge('abcrop_pictures')
        ->key(array('id' => $id))
        ->insertFields($abcrop_fields) // - если надо вставить.
        ->updateFields($abcrop_fields) // - если надо обновить.
        ->execute();
?>

Все.

Опубликовано 4-12-2013 в 14:06


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>











Свежие комментарии

  • krasnov8953: к записи Не работает как мне кажется строчка $newTvId = $ »
  • Dimanski: к записи ничего не понимаю. Ставлю ModX на хостинг r01.ru »
  • Дмитрий: к записи Спасибо! Очень выручили. С битриксом беда, а прав »
  • леонид: к записи как сделать что были в ряд? у меня получается по о »
  • Администратор: к записи Статический IP. »
  • Steel: к записи Администратор, вы данную проблему решили подключен »
  • Дмитрий: к записи Хотел узнать как прикрутить данное окно (http://re »

Последние твиты