【问题标题】: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 (?, ?, ?, ?)'你有三个字段和参数绑定四个值'?'。如果没有清晰的代码,就无法确定问题出在哪里。

标签: php symfony orm


【解决方案1】:

如果Event::$ville 只是一个文本/字符串字段,那么这很可能是问题的一部分。

entity 类型字段将作为关联(即外键)绑定回底层对象。

如果您希望Ville::$titre 的值以event.ville 结尾,那么您只需切换到带有自定义choice_listchoice 字段,格式为您自己的EntityChoiceList,特别是关于到EntityChoiceList::getValues()的执行

【讨论】:

  • 这应该是外键但不是必须在那里。没有外键,我们添加为实体。这不是这个的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2016-06-15
  • 1970-01-01
相关资源
最近更新 更多