Я столкнулся с ситуацией, когда задача генератора сущностей неправильно создает функции «добавления» для связанных сущностей, когда одна сущность дважды связана с другой.Мне интересно, может ли это быть вызвано тем, что я неправильно определяю отношения, или это ошибка?Если это просто проблема с генератором, то это не имеет большого значения, но если это оказывает непреднамеренное влияние на отношения, то это большая проблема, и мне нужен ваш совет, чтобы определить, что происходит.
Короче говоря, пользовательимеет отношения 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;
}