因此,我正在为我的网站构建一个消息系统,我得到了Message实体,该实体与Inbox具有多对多的关系,该实体应存储message_id和receiver_id。因为用户应该能够向许多用户发送消息
我已经完成了所有关系,但是在提交表单时出现错误:
关联字段“ DEERCMS \ MessageBundle \ Entity \ Message#$ receiver”的类型为“ Doctrine \ Common \ Collections \ Collection | array”的期望值,取而代之的是“ PTB \ UserBundle \ Entity \ User”。
'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);
}
和我的实体留言
/**
* 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;
}
}
我自己解决了。所以基本上目标实体是错误的,应该在消息和用户之间定义关系,这就是它的样子
/**
* @ORM\ManyToMany(targetEntity="PTB\UserBundle\Entity\User")
* @ORM\JoinTable(name="message_receivers",
* joinColumns={@ORM\JoinColumn(name="message_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", unique=true)}
* )
*/
private $user;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句