ertttert
Books-CMS.clan.su

Вставки и обновления данных с помощью drupal_write_record()

Вставки в базу данных новых строк и обновления существующих строк являются распространенной программистской задачей. Код обычно определяет, что нужно осуществить — вставку или изменение — а затем выполняет необходимую операцию.

Поскольку каждая таблица, используемая в Drupal, описывается с помощью схемы, Drupal знает, какие поля содержатся в таблицах и каковы значения по умолчанию для каждого поля. Передав ассоциативный массив полей и значений в функцию drupal_write_record(), можно поручить Drupal сгенерировать и выполнить SQL-запрос, не делая этого вручную.

Предположим, что имеется таблица с записями о коллекции гигантских кроликов. Хук схемы для модуля с описанием таблицы выглядит так:

/**
* Реализация hook_schema().
*/

function bunny_schema() {

$schema['bunnies'] = array(
 'description' => t('Stores information about giant rabbits.'),
 // Хранит информацию о гигантских кроликах.
 'fields' => array(
 'bid' => array(

 'type' => 'serial',
 'unsigned' => TRUE,
 'not null' => TRUE,
 'description' => t("Primary key: A unique ID for each bunny."),
 // Первичный ключ: уникальный идентификатор для каждого кролика.
 ),

 'name' => array(

 'type' => 'varchar',
 'length' => 64,
 'not null' => TRUE,
 'description' => t("Each bunny gets a name."),
 // У каждого кролика есть имя.
 ),

 'tons' => array(
 'type' => 'int',
 'unsigned' => TRUE,
 'not null' => TRUE,
 'description' => t('The weight of the bunny to the nearest ton.'),
 // Вес кролика с точностью до тонны.
 ),
 ),
 'primary key' => array('bid'),
 'indexes' => array(
 'tons' => array('tons'),
 ),
);

return $schema;
}

Вставка новых записей и обновление существующих выполняются элементарно:

$table = 'bunnies';
$record = new stdClass();
$record->name = t('Bortha');
$record->tons = 2;
drupal_write_record($table, $record);

// Новый идентификатор кролика $record->bid устанавливается с помощью
// drupal_write_record(), т.к. $record передается по ссылке.
watchdog('bunny', 'Added bunny with id %id.', array('%id' => $record->bid));

// Придумали другое имя.
$record->name = t('Bertha');

// Теперь изменим запись в базе данных.
// Для изменения нужно передать имя первичного ключа таблицы.
drupal_write_record($table, $record, 'bid');

watchdog('bunny', 'Updated bunny with id %id.', array('%id' => $record->bid));

Поддерживается и синтаксис с массивами, хотя если $record является массивом, то drupal_write_record() преобразует его во внутренний объект.

Всего комментариев: 1
1 MarryDrela  
0
Hello everybody! I yearn for to tell you a diminutive roughly myself, I am quite a moneyed missus, I like to take a smiling make a fool of and I love my undertaking, I'm ripping but there is no extension of a participant with whom I could just take sex. You speak with age is the habits and small change that would maintain to stint I have no lifetime because dates and meetings that would just talk. I barely hunger for vehement shafting without commitment. Heart expanse 3 athletic, attractive, low growth. My photos are here http://sex911.top/MarryDrela There is a motor car, and she can appear c rise, just keep an apartment where you can come. If you are married, you can be your mistress. If you are interested then divert create or call.

Имя *:
Email *:
Код *:


Бесплатный конструктор сайтовuCoz