2011-07-24 8 views
0

フォーム上に<select>の次のコードがあります。Doctrine2反復

$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++; 
} 

私は何か間違っていますか?リファレンスマニュアルは最初のオプションを正しいものとして挙げています...

答えて

1

使用:

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

変数名が一致しません。

$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"; 
} 
+0

です:あなたは '使用する場合 - > iterate() 'を呼び出すと、単一の変数(ここでは' $ group')は常に配列にカプセル化されます。これを実行しようとすると、データが見つかりません。 – Daniel