使用实体的属性作为选择列表
Posted
技术标签:
【中文标题】使用实体的属性作为选择列表【英文标题】:using a property of an entity as a choice list 【发布时间】:2014-09-10 11:24:18 【问题描述】:我正在使用 symfony2 和 sonata admin 来管理我的实体,对于我的“事件”实体,我正在配置表单字段,如下所示:
protected function configureFormFields(FormMapper $formMapper)
$formMapper
->add('titre', 'text', array('label' => 'titre'))
->add('ville', 'entity', array('class' => 'AgendaBundle\Entity\Ville','property' => 'titre'))
->add('isactive')
;
表单很好地生成了“ville”实体标题列表,但是当我尝试添加新的“事件”时,我得到一个 sql 异常 SQLSTATE[42000]:语法错误或访问冲突:1064 你有一个SQL 语法错误
在生成的 sql 语法中,我看到 symfony 正在尝试将“ville”值插入为空数组:An exception occurred while executing 'INSERT INTO event (titre, ville , isActive) VALUES (?, ?, ?, ?)' with params ["test", , 1]:
有什么问题?
【问题讨论】:
你能告诉我们Event
实体的映射信息吗,特别是Event::$ville
?
“ville”只是“事件”实体中的一个文本字段
错误是说'INSERT INTO event (titre, ville, isActive) VALUES (?, ?, ?, ?)'你有三个字段和参数绑定四个值'?'。如果没有清晰的代码,就无法确定问题出在哪里。
【参考方案1】:
如果Event::$ville
只是一个文本/字符串字段,那么这很可能是问题的一部分。
entity
类型字段将作为关联(即外键)绑定回底层对象。
如果您希望Ville::$titre
的值以event.ville
结尾,那么您只需切换到带有自定义choice_list
的choice
字段,格式为您自己的EntityChoiceList,特别是关于到EntityChoiceList::getValues()
的执行
【讨论】:
这应该是外键但不是必须在那里。没有外键,我们添加为实体。这不是这个的错误。以上是关于使用实体的属性作为选择列表的主要内容,如果未能解决你的问题,请参考以下文章