Отображение отношений и выпуск генератора Entitiy - PullRequest
1 голос
/ 23 января 2012

Я столкнулся с ситуацией, когда задача генератора сущностей неправильно создает функции «добавления» для связанных сущностей, когда одна сущность дважды связана с другой.Мне интересно, может ли это быть вызвано тем, что я неправильно определяю отношения, или это ошибка?Если это просто проблема с генератором, то это не имеет большого значения, но если это оказывает непреднамеренное влияние на отношения, то это большая проблема, и мне нужен ваш совет, чтобы определить, что происходит.

Короче говоря, пользовательимеет отношения oneToMany с сообщением дважды.Объект сообщения имеет отправителя и получателя, оба являются связанными объектами пользователя.В свою очередь, пользователь отправил сообщение и получил сообщение в своих отношениях.Установщики sentmessages и receivemessages на стороне пользователя не генерируются должным образом.

Вот как выглядит мой yml, довольно просто:

Acme\DemoBundle\Entity\User:
  type: entity
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    name:
      type: string
  oneToMany:
    sentmessages:
      targetEntity: Message
      mappedBy: user
    receivedmessages:
      targetEntity: Message
      mappedBy: user


Acme\DemoBundle\Entity\Message:
  type: entity
  id:
    id:
      type: integer
      generator: { strategy: AUTO }
  fields:
    body:
      type: string
    created_at:
      type: datetime
  manyToOne:
    sender:
      targetEntity: User
      inversedBy: sentmessages
      joinColumn:
        name: sender_id
        referencedColumnName: id
    receiver:
      targetEntity: User
      inversedBy: receivedmessages
      joinColumn:
        name: receiver_id
        referencedColumnName: id

Как вы можете видеть, пользователь имеет два отношения к сообщению.Когда я генерировал сущности с помощью задачи «Генератор сущностей», он создал только одну функцию для добавления сообщений пользователю, и она была неправильной:

/**
 * Add sentmessages
 *
 * @param Acme\DemoBundle\Entity\Message $sentmessages
 */
public function addMessage(\Acme\DemoBundle\Entity\Message $sentmessages)
{
    $this->sentmessages[] = $sentmessages;
}

Вместо этого он должен был сгенерировать две функции добавления, например:

/**
 * Add sentmessages
 *
 * @param Acme\DemoBundle\Entity\Message $sentmessages
 */
public function addSentmessage(\Acme\DemoBundle\Entity\Message $sentmessages)
{
    $this->sentmessages[] = $sentmessages;
}

/**
 * Add receivedmessages
 *
 * @param Acme\DemoBundle\Entity\Message $receivedmessages
 */
public function addReceivedmessage(\Acme\DemoBundle\Entity\Message $receivedmessages)
{
    $this->receivedmessages[] = $receivedmessages;
}
...