为了账号安全,请及时绑定邮箱和手机立即绑定

显示表单 EntityType::class 用户列表 - 保存 @OneToMany - 错误

显示表单 EntityType::class 用户列表 - 保存 @OneToMany - 错误

PHP
慕田峪7331174 2022-06-17 10:34:02
使用 Symfony 4.1,Doctrine 2.x,我有三个实体。一个订阅可以分配多个身份(也称为用户帐户)。当保存哪些身份属于屏幕上当前可见的订阅时(通过标准 Symfony 表单),它会失败。身份.phpclass Identity implements UserInterface, \Serializable, InteractiveLoginUserInterface{    /**     * @var int     *     * @ORM\Column(type="integer")     * @ORM\Id     * @ORM\GeneratedValue(strategy="AUTO")     */    private $id;    /**     * @var string|null     *     * @ORM\Column(type="string", length=255, unique=true)     * @Assert\NotBlank()     * @Assert\Email()     * @Assert\Length(max="255")     */    public $username;订阅.phpclass Subscription{    /**     * @ORM\Column(type="integer")     * @ORM\Id     * @ORM\GeneratedValue(strategy="AUTO")     */    public $id;    /**     * @var bool     * @ORM\Column(type="boolean")     */    /**     * @var Collection     * @ORM\OneToMany(targetEntity="SubscriptionIdentity", mappedBy="subscription", fetch="EAGER")     */    public $identities;SubscriptionIdentity.phpclass SubscriptionIdentity{    /**     * @var int     *     * @ORM\Column(type="integer")     * @ORM\Id     * @ORM\GeneratedValue(strategy="AUTO")     */    private $id;    /**     * @ORM\ManyToOne(targetEntity="Subscription", inversedBy="identities")     * @ORM\JoinColumn(name="subscription_id", referencedColumnName="id", nullable=false)     */    public $subscription;    /**     * @ORM\ManyToOne(targetEntity="Identity", inversedBy="subscriptions")     * @ORM\JoinColumn(name="identity_id", referencedColumnName="id", nullable=true)     */    public $identity;请帮忙!Symfony / Doctrine 文档在这种情况下并没有太大帮助。谢谢。
查看完整描述

1 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

您收到此错误是因为您尝试将类型的对象分配Identity给一个属性,其中学说等待 un object off type SubscriptionIdentity。


您在这里描述的是多对多关系。


尝试像这样修改您的实体:


class Subscription

{

    /**

     * @ORM\Column(type="integer")

     * @ORM\Id

     * @ORM\GeneratedValue(strategy="AUTO")

     */

    public $id;

    /**

     * @var bool

     * @ORM\Column(type="boolean")

     */


    /**

     * @var Collection

     * @ManyToMany(targetEntity="Identity")

     * @JoinTable(name="subscription_identity",

     *      joinColumns={@JoinColumn(name="subscription_id", referencedColumnName="id")},

     *      inverseJoinColumns={@JoinColumn(name="identity_id", referencedColumnName="id")}

     *      )

     */

    public $identities;

cf:https ://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/association-mapping.html#many-to-many-unidirectional


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号