我想使用已批准的用户(表
)对用户进行批量更新field_user_status_value
-----------------------
entity_type, entity_id, field_user_status_value
entity_id是表中不存在的用户ID,下面是我为更新表而编写的自定义模块:
function bulkapprove_action_info() {
return array(
'bulkapprove_action_callback_name' => array(
'type' => 'user', // Can be file, term, user, etc.
'label' => t('Approve User'),
'configurable' => FALSE, // Doesn't need config form
'behavior' => array('view_property'), // Uses view access rights ,
'pass rows' => TRUE,
'triggers' => array('any'), // Works always
),
);
}
function bulkapprove_action_callback_name($entity, $context)
{
db_update('field_data_field_user_status')->fields(array('field_user_status_value' => 'Approved'))->condition('entity_id', $context->entity_id)->execute();
}
但它没有在此表中插入值
答案 0 :(得分:1)
在Drupal中,您不希望直接更新数据库字段,除非您创建了表。 Drupal的内部API提供了一系列工具,可确保您正确更新值,并通过挂钩系统根据需要通知所有支持模块的更改。
在这种情况下,回调将获取实际实体以对其进行操作(在本例中为用户对象)。您希望对该实体执行操作,然后保存该实体。
function bulkapprove_action_callback_name($entity, $context)
{
$entity->status = 1;
entity_save('user', $entity);
}