Schema API и запись данных в Друпале
Так получилось, что еще года четыре назад я немного баловался Друпалом 4.x. Там новые записи добавлялись в таблицы базы данных через db_query(), которая никуда не делась и в шестой версии. Пример добавления записи выглядел так:
VALUES ('%s', '%s', %d, ...)",
$field1,$field2,$field3,...);
drupal_install_schema().
И только недавно выяснил, что использовать drupal_write_record() - куда изящнее и удобнее.
$my_table_entry->field1 = 'field1';
$my_table_entry->field2 = 'field2';
$my_table_entry->field3 = 3;
//...
drupal_write_record('my_table',$my_table_entry);
hook_insert()? Тогда запись$result = db_query("INSERT INTO {my_table} (field1, field2, field3, ...)
VALUES ('%s', '%s', %d, ...)",
$node->field1,$node->field2,$node->field3,...);
}
hook_update(), ведь для обновления достаточно только добавить третьим аргументом названия полей primary keys, по которым обновляемая запись будет обнаружена.
Ну и, наконец, по окончании работы функции, в сохраняемом объекте появятся значения всех serial-полей вновь созданной записи, то есть вызывать n-е количество раз db_last_insert_id() будет уже не нужно.
В общем, если в нашем модуле таблицы БД созданы через Schema API (а они должны быть так созданы) - использовать drupal_write_record() очень удобно.
Выборкой по ключевому полю, видимо. А в чем проблема?












А как посоветуете проверять на существование записи в таблице?