使用实体的属性作为选择列表

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_listchoice 字段,格式为您自己的EntityChoiceList,特别是关于到EntityChoiceList::getValues()的执行

【讨论】:

这应该是外键但不是必须在那里。没有外键,我们添加为实体。这不是这个的错误。

以上是关于使用实体的属性作为选择列表的主要内容,如果未能解决你的问题,请参考以下文章

选择属性的所有值并使用 XSLT 1.0 作为列表返回

在 macOS 上的 SwiftUI 列表视图中选择和删除核心数据实体

JPQL 根据孙属性选择实体

Hibernate HSQL 使用嵌套列表选择新的

为啥我不能使用“描述”作为核心数据实体的属性名称?

JAVAEE学习笔记hibernate02:实体规则对象状态缓存事务批量查询和实现客户列表显示