我正在构建一个Zend表单,其下拉/选择菜单填充了Doctrine 2查询中的数据。
在我的repository类中,我在名为selectUser()的方法中有以下查询:
$query = $em->createQuery('SELECT u.id, u.name FROM XX\Entity\Users u ORDER BY u.name ASC');
$users = $query->getResult();
这会返回一个多维数组,我试图像这样循环(在同一个方法中):
$options = array();
foreach ($users as $key => $value) {
$options[$value['id']] = $value['name'];
}
return $options;
然后在我的Zend表单类中,我尝试填充Select元素,如下所示:
$id = new Zend_Form_Element_Select('id');
$options = $this->usersRepository->selectUser();
$id->AddMultiOptions($options);
每个用户行的结果是一个错误,指出“未定义的索引:[名称]在...... UsersRepository.php ...中”,其中[name]是每行中'name'列的值。< / p>
有没有人看到我做错了什么或如何使用Doctrine 2和Zend Framework填充动态选择菜单?
(顺便说一句,为了运行存储库方法,表单类具有表示Doctrine容器,实体管理器和Users存储库的受保护属性。如果这不是最佳实践,我欢迎任何建议改进我的技术。)
答案 0 :(得分:1)
我认为你的问题在这里
$ options [$ value ['id'] = $ value ['name']];
这会更好
$ options [$ value ['id']] = $ value ['name'];