Drupal 7 如何在Drupal 7中通过电子邮件地址加载用户对象?

Drupal 7 如何在Drupal 7中通过电子邮件地址加载用户对象?,drupal-7,Drupal 7,一直在谷歌和Drupal文档上疯狂搜索与D6相同的东西 D7中的user_load函数接受UID,而D6版本足够灵活,可以允许使用电子邮件地址 有什么线索可以让我在D7中达到同样的目的吗 谢谢在Drupal论坛上得到了答案。基本上包括直接从数据库加载与电子邮件相关联的用户Id,然后在成功时运行user_load function my_module_load_user_by_mail($mail){ $query = db_select('user', 'u'); $uid = $query

一直在谷歌和Drupal文档上疯狂搜索与D6相同的东西

D7中的user_load函数接受UID,而D6版本足够灵活,可以允许使用电子邮件地址

有什么线索可以让我在D7中达到同样的目的吗


谢谢

在Drupal论坛上得到了答案。基本上包括直接从数据库加载与电子邮件相关联的用户Id,然后在成功时运行user_load

function my_module_load_user_by_mail($mail){
 $query = db_select('user', 'u');
 $uid = $query->fields('u', array('uid'))->condition('u.uid', $mail)->execute()->fetchField();
  if($uid){
    return user_load($uid);
  }else{
    return FALSE;
  }
}
改为调用模块函数并传递电子邮件

$user = my_module_load_by_mail($mail);

。。。或者您可以只使用user\u load\u by\u mail:

作为后台,其代码依赖于传递给的$conditions参数,该参数在8中已被弃用

下面是我在代码方面的尝试,这可能是将来用户从邮件()加载的代码

<?php
function load_user_by_email( $email )
{
    $query = new EntityFieldQuery();                                   
    $query->entityCondition('entity_type', 'user')                     
          ->propertyCondition('mail', $email);                         

    $result = $query->execute();                                       

    // not found?                                                      
    if (!isset($result['user'])) return;                               

    // found, keys are uids                                            
    $uids = array_keys($result['user']);                               
    $account = user_load($uids[0]);                                    
    return $account; 
}