2012-01-01 5 views
1

У меня есть таблица, подобное следующемуОтслеживание изменений в Друпал сущности

$schema['mytable'] = array(
    'fields' => array(
     'id' => array(
      'type'=>'int', 
      'not null' => TRUE 
     ), 
     'content' => array(
      'type' => 'varchar', 
      'length' => 400 
     ) 
    ), 
    'primary key' => array('id') 
); 

, определенной в hook_schema. У меня есть клиентское приложение JavaScript, которое неоднократно вытягивает содержимое этой таблицы клиенту, чтобы оно мгновенно обновлялось, когда таблица была изменена (например, общая электронная таблица в документах google). То, что я хочу сделать, это оптимизировать его, чтобы каждый раз предоставлять измененные записи. Моя первоначальная мысль заключалась в том, чтобы дать каждому элементу свойство timestamp и заставить клиента отслеживать самую высокую отметку времени, которую он видел, а затем запрашивать все с более новой меткой времени. Затем я увидел в документации Drupal api для hook_schema, что, как представляется, магическое свойство всех узлов, называемых измененными. Могу ли я получить аналогичное магическое свойство для своих сущностей, и поможет ли это в моем сценарии, или мне будет лучше просто сворачивать свою собственную логику, чтобы сделать это. Производительность довольно критическая, так как это, скорее всего, станет ключевым узким местом.

ответ

1

Я думаю, вы ошибаетесь в отношении «волшебной собственности», «измененной», поскольку в этом нет ничего волшебного. Это просто нормальное поле int в таблице узлов, которое заполняется отметкой времени UNIX, в значительной степени похожей на ту, которую вы предлагаете для вашего прецедента.

На неправильное, вероятно, связано с API документации hook_schema только показывая часть определения таблицы узлов, как отмечено встроенный в коде:

function hook_schema() { 
    $schema['node'] = array(
    // example (partial) specification for table "node" 
[...] 

Если посмотреть на полное осуществление node_schema(), вы будете найти следующее определение для «изменилось» поле:

[...] 
'changed' => array(
    'description' => 'The Unix timestamp when the node was most recently saved.', 
    'type' => 'int', 
    'not null' => TRUE, 
    'default' => 0, 
), 
[...] 

так нет волшебной здесь, и вы должны, вероятно, просто идти вперед со своей собственной логикой, как планировалось :)

+0

Спасибо, я пропустил этот комментарий о спецификации, только частичный. – ForbesLindesay

Смежные вопросы