查询Drupal用户表:创建日期< $ today - ' 100000'

时间:2015-03-05 03:11:52

标签: drupal-7

我想从Drupal用户表中选择创建日期早于1天前的用户。然后删除这些用户。这段代码不正确但它会让你知道我想要做什么我只是不知道正确的数据库查询。 '

    $users = db_select('user', 'created') //I know this is not the right DB query  
    $count = count($users);
    if($count > 0){
      $users = user_load_multiple(array_keys($users['user']));
    }
    $today = getdate(); 
    if ($users < $today - '100000' ) {
     user_delete($user->uid)
    }

我正在考虑使用user_load_multiple()将用户加载到数组中以执行删除操作。

1 个答案:

答案 0 :(得分:0)

获取包含要删除的用户的uid的数组,并使用user_delete_multiple($ arrayOfUidToDelete):ContractResolver

如果你有很多用户,那么使用函数user_load_multiple()可能会对资源造成很大的影响,你会以PHP错误结束(内存不足......)。 另外,您不需要加载用户,只想删除它们。

对于查询,如果没有用户评估的参数(更好的性能),我将使用db_query而不是db_select。 所以它看起来像:

//get the list of uid   
$user_list = db_query("select uid 
                        from users 
                        where CAST(FROM_UNIXTIME(created) as date) < NOW() - INTERVAL 1 DAY"
                      )->fetchCol();
// delete the users
user_delete_multiple($user_list);