当表单具有实体类型时,Symfony3多对多现实

1

因此,我正在为我的网站构建一个消息系统,我得到了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;
    }
}
1

我自己解决了。所以基本上目标实体是错误的,应该在消息和用户之间定义关系,这就是它的样子

 /**
 * @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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

symfony3:为具有多对一关系的列的实体创建表单

来自分类Dev

Symfony3 表单类型和多对多关系

来自分类Dev

实体框架与相同实体类型但具有不同关系类型的多对多关系

来自分类Dev

EF代码优先:具有多个多对一关系的实体类型

来自分类Dev

EF代码优先:具有多个多对一关系的实体类型

来自分类Dev

Symfony 表单验证实体类型

来自分类Dev

Symfony3.0保存带有“实体类型”下拉列表的表单时;SQL错误无法插入null

来自分类Dev

具有相同标签的L1实体类型和L3实体类型

来自分类Dev

Symfony 2.8表单实体类型自定义属性

来自分类Dev

Symfony2实体表单类型无法保存多对多

来自分类Dev

相同实体类型代码的多对多关系首先

来自分类Dev

具有类型和不同选项的通用实体的 Symfony 表单

来自分类Dev

一对多的属性,具有Symfony 3 / Doctrine形式的表单

来自分类Dev

一对多的属性,具有Symfony 3 / Doctrine形式的表单

来自分类Dev

Symfony3 表单类型,通过 id 引用其他实体

来自分类Dev

带有多对多映射的 Symfony 表单

来自分类Dev

提交symfony3表单时如何在子实体上设置父ID

来自分类Dev

Symfony3.0使用实体类型下拉菜单保存表单时;SQL错误无法插入null

来自分类Dev

具有实体类的Symfony2 FormBuilder

来自分类Dev

Symfony 4表单使用具有附加属性的联接表进行多对多

来自分类Dev

Symfony3表单类实体管理器

来自分类Dev

Symfony 2.7表单实体类型在表单中呈现多个属性

来自分类Dev

将多对多与学说/ symfony3的关系

来自分类Dev

无法使用 SF2 表单删除具有多对多相关对象的实体

来自分类Dev

同一实体的多对多集合,具有双向关系

来自分类Dev

代码优先实体框架具有多对多的多个集合

来自分类Dev

是否获得具有多对多链接的链接实体?

来自分类Dev

Symfony3在表单生成期间无法加载类型错误

来自分类Dev

在 Symfony3 中自定义选择表单类型

Related 相关文章

  1. 1

    symfony3:为具有多对一关系的列的实体创建表单

  2. 2

    Symfony3 表单类型和多对多关系

  3. 3

    实体框架与相同实体类型但具有不同关系类型的多对多关系

  4. 4

    EF代码优先:具有多个多对一关系的实体类型

  5. 5

    EF代码优先:具有多个多对一关系的实体类型

  6. 6

    Symfony 表单验证实体类型

  7. 7

    Symfony3.0保存带有“实体类型”下拉列表的表单时;SQL错误无法插入null

  8. 8

    具有相同标签的L1实体类型和L3实体类型

  9. 9

    Symfony 2.8表单实体类型自定义属性

  10. 10

    Symfony2实体表单类型无法保存多对多

  11. 11

    相同实体类型代码的多对多关系首先

  12. 12

    具有类型和不同选项的通用实体的 Symfony 表单

  13. 13

    一对多的属性,具有Symfony 3 / Doctrine形式的表单

  14. 14

    一对多的属性,具有Symfony 3 / Doctrine形式的表单

  15. 15

    Symfony3 表单类型,通过 id 引用其他实体

  16. 16

    带有多对多映射的 Symfony 表单

  17. 17

    提交symfony3表单时如何在子实体上设置父ID

  18. 18

    Symfony3.0使用实体类型下拉菜单保存表单时;SQL错误无法插入null

  19. 19

    具有实体类的Symfony2 FormBuilder

  20. 20

    Symfony 4表单使用具有附加属性的联接表进行多对多

  21. 21

    Symfony3表单类实体管理器

  22. 22

    Symfony 2.7表单实体类型在表单中呈现多个属性

  23. 23

    将多对多与学说/ symfony3的关系

  24. 24

    无法使用 SF2 表单删除具有多对多相关对象的实体

  25. 25

    同一实体的多对多集合,具有双向关系

  26. 26

    代码优先实体框架具有多对多的多个集合

  27. 27

    是否获得具有多对多链接的链接实体?

  28. 28

    Symfony3在表单生成期间无法加载类型错误

  29. 29

    在 Symfony3 中自定义选择表单类型

热门标签

归档