Так я строит систему сообщений на мой сайт, я получил сообщение лицо, которое имеет realtion многие-ко-многим с Входящие, который должен хранить message_id и receiver_id. Это beacouse пользователь должен иметь возможность отправить сообщение многих пользователейSymfony3 многие-ко-многим realtion, когда форма имеет EntityType
я сделал все отношения, но, когда форма была отправлена, я получаю сообщение об ошибке:
Expected value of type "Doctrine\Common\Collections\Collection|array" for association field "DEERCMS\MessageBundle\Entity\Message#$receiver", got "PTB\UserBundle\Entity\User" instead.
Вот форма, она имеет 'multiple' => true
обусловленно, как Я сказал, пользователь должен иметь возможность отправленного сообщения для многих других пользователей
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('receiver', EntityType::class, array(
'class' => 'PTBUserBundle:User',
'choice_label' => 'email',
'multiple' => true,
'expanded' => false,
))
->add('title')
->add('message', TextareaType::class);
}
И мои Entities сообщения
/**
* Message
*
* @ORM\Table()
* @ORM\Entity()
*/
class Message
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string")
*/
private $sender;
/**
* @ORM\ManyToMany(targetEntity="DEERCMS\MessageBundle\Entity\Inbox")
* @ORM\JoinTable(name="message_receivers",
* joinColumns={@ORM\JoinColumn(name="message_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="receiver_id", referencedColumnName="id", unique=true)}
* )
*/
private $receiver;
/**
* @ORM\Column type="string")
*/
private $title;
/**
* @ORM\Column(type="string", length=4000)
*/
private $message;
/**
* @ORM\Column(type="date")
*/
private $date;
/**
* @ORM\Column(type="boolean")
*/
private $displayed;
public function __construct()
{
$this->date = new \DateTime();
$this->receiver = new \Doctrine\Common\Collectionsn\ArrayCollection();
}
//...
/**
* Set sender
*
* @param integer $sender
*
* @return Message
*/
public function setSender($sender)
{
$this->sender = $sender;
return $this;
}
/**
* Get sender
*
* @return int
*/
public function getSender()
{
return $this->sender;
}
/**
* Set receiver
*
* @param integer $receiver
*
* @return Message
*/
public function setReceiver($receiver)
{
$this->receiver = $receiver;
return $this;
}
/**
* Get receiver
*
* @return int
*/
public function getReceiver()
{
return $this->receiver;
}
/**
* Add receiver
*
* @param \DEERCMS\MessageBundle\Entity\Inbox $receiver
*
* @return Message
*/
public function addReceiver(\DEERCMS\MessageBundle\Entity\Inbox $receiver)
{
$this->receiver[] = $receiver;
return $this;
}
/**
* Remove receiver
*
* @param \DEERCMS\MessageBundle\Entity\Inbox $receiver
*/
public function removeReceiver(\DEERCMS\MessageBundle\Entity\Inbox $receiver)
{
$this->receiver->removeElement($receiver);
}
}
Входящие
/**
* Inbox
*
* @ORM\Table(name="inbox")
* @ORM\Entity(repositoryClass="DEERCMS\MessageBundle\Repository\InboxRepository")
*/
class Inbox
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
}
Можете ли вы пометить свой ответ как принятый? – Veve
@Veve У меня есть уведомление «Вы можете принять свой собственный ответ завтра». Так что я сделаю это, завтра :) – misterlewy1