2016-03-10 3 views
0

У меня есть запрос, чтобы получить все Schools с JOIN до District.Запрос не возвращает все поля

SELECT * FROM School LEFT JOIN Dicstrict ON School.school_number = District.school_number ORDER BY School.school_number 

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

school_number name school_number 
12345   abc  12345 
67890   def  null 
63712   ghj  null 

Если я выполнить это на doctrine с DBAL в silex:

$stmt = $this->app['db']->executeQuery('SELECT * FROM School LEFT JOIN Dicstrict ON School.school_number = District.school_number ORDER BY School.school_number'); 
$filteredData = array(); 
while ($row = $stmt->fetch()) { 
    $filteredData[] = $row; 
} 
var_dump($filteredData); 

Я получаю это

school_number name 
12345   abc 
null    def 
null    ghj 

У меня нет никаких идей, что произойдет и как я могу решить эту проблему. У кого-то еще такая же проблема?

Может кто-нибудь дать мне подсказку?

+1

Существует два поля с тем же именем. Вы не можете иметь два поля с тем же именем в ассоциативных массивах PHP. Вам придется либо использовать индексированные массивы (и мириться с беспорядком, который может возникнуть при изменении макета столбца), либо псевдоним хотя бы одного из полей с AS – GordonM

ответ

0

У вас есть два поля с именем school_number, поэтому один из них перезаписывается другим на стороне PHP при извлечении строки.

Ассоциативные массивы не могут иметь одну и ту же клавишу дважды.

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