Drupal OG Mass Add - проверять настоящее имя вместо имени? EFQ с использованием подзапроса?
Может ли og_massadd искать на основе реального имени вместо имени пользователя?
// 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 к свойствам сущности или есть какой-либо другой способ проверки?
Любой совет / помощь высоко ценится.
ОБНОВИТЬ
Просто нашел способ с помощью drush, чтобы увидеть доступные пользовательские поля, где realname не является их частью:(
Есть ли другой способ перекрестной проверки с реальным именем?
UPDATE2
Выяснили, что внутренние объединения EFQ не поддерживаются, но читали об обходном пути, используя подзапрос, но не смогли заставить его работать, и теперь застряли, есть мысли?
$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();
1 ответ
Удалось заменить запрос объединенным поиском
$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);
}