Как я могу решить ManyToOne (AddressType) внутри OneToMany (UserAddress) внутри OneToMany (пользователь) в коллекциях форм symfony2

Я работаю с коллекциями форм Symfony2, и в любой точке приложения у меня была эта ошибка:

cannot convert AddressType to string

Моя Пользовательская сущность

/**
* @var $addresses
* @ORM\OneToMany(targetEntity="AppBundle\Entity\UserAddress", mappedBy="user", cascade={"persist"})
*/
private $addresses;

(…)

/**
* Set addresses
*
* @param Collection $addresses
* @return User
*/
public function setAddresses(Collection $addresses) : User
{
if(! $addresses instanceof Collection){
throw new InvalidArgumentException("$addresses must be an instance of Collection");
}

$this->addresses = $addresses;

return $this;
}

/**
* Add address
*
* @param \AppBundle\Entity\UserAddress $address
*
* @return User
*/
public function addAddress(\AppBundle\Entity\UserAddress $address)
{
if(! $address instanceof UserAddress) {
throw new InvalidArgumentException("$address must be an instance of UserAddress");
}

if(!$this->addresses->contains($address)) {
$address->setUser($this);
$this->emails->add($address);
}

$this->addresses[] = $address;

return $this;
}

/**
* Remove address
*
* @param \AppBundle\Entity\UserAddress $address
*/
public function removeAddress(\AppBundle\Entity\UserAddress $address)
{
if(! $address instanceof UserAddress) {
throw new InvalidArgumentException("$address must be an instance of UserAddress");
}

$this->addresses->removeElement($address);
}

/**
* Get addresses
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAddresses()
{
return $this->addresses;
}

Мой UserAddress Entity

/**
* @var
* Many addresses have one address type.
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\AddressType", inversedBy="userAddressType")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id")
*/
private $addressType;

(…)

/**
* Add addressType
*
* @param \AppBundle\Entity\AddressType $addressType
*
* @return UserAddress
*/
public function addAddressType(\AppBundle\Entity\AddressType $addressType)
{
if(! $addressType instanceof UserType && $addressType !== null){
throw new InvalidArgumentException("$addressType must be an instance of AddressType, or null");
}

$this->addressType[] = $addressType;

return $this;
}

/**
* Remove addressType
*
* @param \AppBundle\Entity\AddressType $addressType
*/
public function removeAddressType(\AppBundle\Entity\AddressType $addressType)
{
if(! $addressType instanceof UserType && $addressType !== null){
throw new InvalidArgumentException("$addressType must be an instance of AddressType, or null");
}

$this->addressType->removeElement($addressType);
}

/**
* Set addressType
*
* @param \AppBundle\Entity\AddressType $addressType
*
* @return UserAddress
*/
public function setAddressType(\AppBundle\Entity\AddressType $addressType = null)
{
if(! $addressType instanceof User && $addressType !== null) {
throw new \InvalidArgumentException("$addressType must be an instance of AddressType, or null");
}

$this->addressType = $addressType;

return $this;
}

/**
* Get addressType
*
* @return \AppBundle\Entity\AddressType
*/
public function getAddressType()
{
return $this->addressType;
}

My AddressType Entity

/**
* @var
*
* @ORM\OneToMany(targetEntity="AppBundle\Entity\UserAddress", mappedBy="addressType")
*/
private $userAddressType;

(…)

/**
* Add userAddressType
*
* @param \AppBundle\Entity\UserAddress $userAddressType
*
* @return AddressType
*/
public function addUserAddressType(\AppBundle\Entity\UserAddress $userAddressType)
{
$this->userAddressType[] = $userAddressType;

return $this;
}

/**
* Remove userAddressType
*
* @param \AppBundle\Entity\UserAddress $userAddressType
*/
public function removeUserAddressType(\AppBundle\Entity\UserAddress $userAddressType)
{
$this->userAddressType->removeElement($userAddressType);
}

/**
* Get userAddressType
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getUserAddressType()
{
return $this->userAddressType;
}

И это в форме UserType:

->add('addresses', CollectionType::class,
[
'entry_type' => UserAddressType::class,
'by_reference' => false,
'allow_add' => true,
'allow_delete' => true,
]
);

Проблема в том, что когда я запускаю в editAction, например, эта ошибка происходит

Cannot convert AddressType to string

Спасибо за помощь!


РЕДАКТИРОВАТЬ:

Я нашел ответ на чтение

http://symfony.com/doc/current/form/events.html#pre-populating-the-form-formevents-pre-set-data-and-formevents-post-set-data

0

Решение

Я видел это как результат отсутствия надлежащего __toString() метод на моих классах сущностей, поэтому select затем не может отобразить правильное «значение» и исключения при разбрызгивании полного объекта вместо репрезентативной строки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]