在谷歌和Drupal文档上疯狂搜索与function user_load使用的D6相当here的内容。
D7中的user_load功能采用UID,而D6版本足够灵活,可以使用电子邮件地址。
我在D7中如何达到同样目的的任何线索?
谢谢
答案 0 :(得分:4)
...或者您可以使用user_load_by_mail:http://api.drupal.org/api/drupal/modules--user--user.module/function/user_load_by_mail/7
答案 1 :(得分:1)
在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);
答案 2 :(得分:1)
仅为后台,user_load_from_mail()的代码依赖于传递给user_load_multiple()的$ conditions参数,该参数已在8中弃用。
这是我对代码的准备,这可能是将来user_load_from_mail()中的内容。
<?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;
}
的Nb。理论上,由于drupal坚持认为电子邮件是唯一的,因此无需检查返回的2+值。