2016-10-30 1 views
0

У меня есть массив массивов, как это -Multicolumn В в Mysql

[ 
    ['mark', 29], 
    ['jolly', 28], 
    ['john', 19], 
    ['jim', 21], 
. 
. 
.  
] 

Я хочу использовать это в том, где в пункте так, что столбец обновляется только тогда, когда обе колонки name и age соответствует подмассив, пытается это так:

createQueryBuilder() 
    ->update('table', 't') 
    ->set('t.eligible', 1) 
    ->where('t.name', 't.age' IN(:nameAgeArray)) 
    ->setParameter('nameAgeArray', $nameAgeArray) 
    ->getQuery() 
    ->execute(); 

Но этот способ не работает. Есть ли способ достичь этого?

EDIT - структура базы данных -

name  age  eligible 
mark  29  null 
john  21  null 
Max  20  null 
+0

@Drew, добавлена ​​структура базы данных – madhur

+2

Http: // StackOverflow .com/вопросы/31435177/как в изготовление многодисковый где в колонке-запрос-в-доктрине-запросе-строитель –

ответ

0

Как уже упоминалось в this answer (уже упоминалось в @PaulSpiegel его комментарий) вы не можете использовать несколько полей/столбцов в этом разделе.
Как вы можете прочитать в this answer here это ограничение распространяется также на статьи orderBy.

Чтобы использовать несколько условий, вы должны разделить на два массива, один для имени и одного возраста, а затем вы можете сделать так:

createQueryBuilder() 
    ->update('table', 't') 
    ->set('t.eligible', 1) 
    ->where('t.name', IN(:nameArray)) 
    ->andWhere('t.age', IN(:ageArray)) 
    ->setParameter('nameArray', $nameArray) 
    ->setParameter('ageArray', $ageArray) 
    ->getQuery() 
    ->execute();