使用Doctrine ORM和Symfony2形式将对象赋值为身份

时间:2015-10-27 09:58:29

标签: php symfony doctrine-orm doctrine

所以,我将这个Doctrine实体映射到MySQL:

Dende\Calendar\Domain\Calendar:
  type: entity
  table: calendars

  embedded:
    id:
      class: Dende\Calendar\Domain\Calendar\CalendarId
      columnPrefix: false

  fields:
    name:
      type: string
      nullable: false
      length: 255

嵌入式类的映射定义如下所示:

Dende\Calendar\Domain\Calendar\CalendarId:
  type:   embeddable

  id:
    id:
      type: guid
      generator: { strategy: UUID }
除了一件事,一切顺利。我使用"日历" symfony表单的实体字段类型中的实体。使用表单构建器添加字段,如下所示:

$builder
            ->add("calendar", "entity", [
                "class" => "Dende\Calendar\Domain\Calendar",
                "choice_label" => "name",
                "placeholder" => "Choose calendar",
            ])

填写表格时显示确定,但提交后我收到例外说:

  

[语法错误]第0行,第106行:错误:预期   Doctrine \ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESIS,得到了'。'

正如我在堆栈跟踪中发现的那样,使用' id.id'进行查询构建。参数(这是有道理的,因为Calendar-> id()返回CalendarId并且它还有id()方法)并且导致错误(之后,在解析时):

 ORMQueryBuilderLoader ->getEntitiesByIds ('id.id', array('calendar_5629f2d738efc')) 

任何人都可以帮助我,在这种情况下该怎么办?这是我的映射中的一些理论或错误的边缘情况吗?除此之外的一切都很好。

我使用Symfony 2.7和Doctrine2.6

编辑:

据我所知,生成的查询可能存在问题:

SELECT e FROM Dende\Calendar\Domain\Calendar e WHERE e.id.id IN(:ORMQueryBuilderLoader_getEntitiesByIds_id.id)

并且可能是上面的id和id之间的最后一个点的问题。当我使用app / console运行此DQL查询时,我得到相同的错误。将点更改为下划线后,只有极少数参数例外。

0 个答案:

没有答案