og_massadd是否可以根据 realname而不是用户名查找?
// If not, try to check for usernames
if (!isset($account) && drupal_strlen($mail)) {
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'user')
->propertyCondition('name', check_plain($mail));
$result = $query->execute();
if (!empty($result)) {
$uids = array_keys($result['user']);
$account = user_load_multiple($uids);
$account = array_shift($account);
}
}
已经尝试过了
- > propertyCondition('realname',check_plain($ mail));
我可以看到它使用EntityFieldQuery和propertyCondition,但我不明白realname是否与实体属性有关,或者是否有其他方法可以检查?
任何建议/帮助都非常感激。
更新
刚刚找到了一种方法,可以看到 realname 不属于他们的“用户”字段:(
任何其他方式与realname交叉检查?
UPDATE2
发现 EFQ内部联接不受支持,但阅读了workaround using subquery,但无法使其正常工作,现在卡住了,有什么想法吗?
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'user')
$rnames_subquery = db_select('realname', 'rn');
$rnames_subquery->fields('rn', array('uid'));
$query->propertyCondition('uid', $rnames_subquery, 'IN');
$result = $query->execute();
答案 0 :(得分:0)
管理以使用联接查找替换查询
$query = db_select('realname','rn');
$query->join('users','usr','usr.uid=rn.uid');
$query->fields('rn', array('uid'));
$query->condition('rn.realname',$mail,'=');
$result =$query->execute()->fetchAll();
if (!empty($result)) {
$uids =array($result[0]->uid);
$account = user_load_multiple($uids);
$account = array_shift($account);
}