Doctrine2 Итерация - PullRequest
       1

Doctrine2 Итерация

0 голосов
/ 24 июля 2011

У меня есть следующий код для <select> в форме.

$query = $em->createQuery("SELECT g.name, g.id FROM SSMURBS\Group g ORDER BY g.name ASC");`
$groups = $query->iterate();`
$groups_option = "";
foreach( $groups as $row ){
    $group = $row[0];
    $groups_option .= "<option val=\"{$group['id']}\">{$group['name']}</option>\n";
}

Но это выдает ошибку.Что работает ...

$query = $em->createQuery("SELECT g.name, g.id FROM SSMURBS\Group g ORDER BY g.name ASC");
$groups = $query->iterate();

$groups_option = "";
$i = 0;
foreach( $groups as $row ){
    $group = $row[$i];
    $groups_option .= "<option val=\"{$group['id']}\">{$group['name']}</option>\n";
    $i++;
}

Я что-то не так делаю?Справочное руководство цитирует первый вариант как правильный ...

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Я нашел ответ на свой собственный вопрос:

Хотя DQL разрешает SELECT g.id, g.name без выдачи ошибки, на самом деле это SQL, а не DQL.(Спасибо, справочное руководство по доктрине, за то, что вы так ясно понимаете это ...)

Правильный способ кодировать это:

$query = $em->createQuery("SELECT partial g.{id,name} FROM SSMURBS\Group g ORDER BY g.name ASC");
$groups = $query->iterate();

$groups_option = "";
foreach( $groups as $group ){
$group = $group[0];
$groups_option .= "<option value=\"{$group->id}\">{$group->name}</option>\n";

}

0 голосов
/ 02 августа 2011

Ваши имена переменных не совпадают.

Удалите $group = $row[0] и используйте foreach ($groups as $group)

$query = $em->createQuery("SELECT g.name, g.id FROM SSMURBS\Group g ORDER BY g.name ASC");
$groups = $query->iterate();
$groups_option = "";
foreach ( $groups as $group ){
    $groups_option .= "<option val=\"{$group['id']}\">{$group['name']}</option>\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...