2015-08-03 2 views
2

У меня есть запрос, чтобы получить имя пользователя из объекта с датой:QueryBuilder массив запросов значения

return $this->createQueryBuilder('t') 
    ->select('t.username') 
    ->where('t.date = :date') 
    ->andWhere('t.username = :username') 
    ->setParameter('date', $date) 
    ->setParameter('username', $username) 
    ->getQuery() 
; 

Однако, когда я хочу, чтобы найти имя в массиве, я использую это:

if (in_array($user_array, $username) != true) {

Я получаю $username массив:

array(1) { 
    [0] => 
    array(1) { 
    'username' => 
    string(9) "username1" 
    } 
} 
array(1) { 
    [0] => 
    array(1) { 
    'username' => 
    string(10) "username90" 
    } 
} 
array(1) { 
    [0] => 
    array(1) { 
    'username' => 
    string(10) "username12" 
    } 
} 

ли вообще можно найти, находится ли имя пользователя в массиве? Нужно ли мне корректировать код QueryBuilder или мне нужно прибегнуть к другому решению в Symfony?

+0

Отрегулируйте QueryBuilder чище –

ответ

5

Вы можете использовать функцию in. Как пример:

public function getUser($arrays, $date) 
    { 
$qb = $this->createQueryBuilder('t'); 
return $qb 
    ->select('t.username') 
    ->where('t.date = :date') 
    ->andWhere($qb->expr()->in('t.username', $arrays)) 
    ->setParameter('date', $date) 
    ->getQuery() 
; 
} 

Подробнее here

Надежда эта помощь

+0

Это хорошая лучшая практика. Теперь я проверяю, нет ли имени пользователя в массиве в функции. Благодарим вас за предоставленный документ. –

+1

Привет @ Рикардо, добро пожаловать! Конечно, существуют выражение '$ qb-> expr() -> notIn' – Matteo

Смежные вопросы