Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony 如何定义允许用户添加新“一对多”原则关联?_Symfony_Doctrine Orm_One To Many - Fatal编程技术网

Symfony 如何定义允许用户添加新“一对多”原则关联?

Symfony 如何定义允许用户添加新“一对多”原则关联?,symfony,doctrine-orm,one-to-many,Symfony,Doctrine Orm,One To Many,我正试图定义我的条令实体,以便与Symfony2一起使用,但我不清楚如何定义关联。下面的例子是为客户编写一份他们想要定制自行车的部件清单 BikeEnquiry对象可以: 只拍一帧 默认情况下需要两个轮子,但可以是零或更多 然而,关于附件,我不太确定这些应该如何映射 用户应该能够从附件下拉列表中进行选择,以查看数据库中的所有项目-但是,如果市场上不存在新产品,他们也应该能够手动输入他们正在寻找的产品的描述。我希望这个新的附件,然后被添加到附件数据库表-这也将是很好的,它作为一个未经验证的项目,我

我正试图定义我的条令实体,以便与Symfony2一起使用,但我不清楚如何定义关联。下面的例子是为客户编写一份他们想要定制自行车的部件清单

BikeEnquiry对象可以:

只拍一帧 默认情况下需要两个轮子,但可以是零或更多 然而,关于附件,我不太确定这些应该如何映射

用户应该能够从附件下拉列表中进行选择,以查看数据库中的所有项目-但是,如果市场上不存在新产品,他们也应该能够手动输入他们正在寻找的产品的描述。我希望这个新的附件,然后被添加到附件数据库表-这也将是很好的,它作为一个未经验证的项目,我的审查标记

下面是我定义实体和注释关联的尝试:

use Doctrine\Common\Collections\ArrayCollection;

/** @Entity **/
class BikeEnquiry 
{
    private $BikeEnquiryid;
    private $frameid;

   /**
    * @OneToMany(targetEntity="Wheel", mappedBy="wheelid")
    **/
    private $wheelid;

   /**
    * @ManyToMany(targetEntity="Accessory")
    * @JoinTable(name="BikeEnquires_accessories",
    *      joinColumns={@JoinColumn(name="BikeEnquiryid", referencedColumnName="BikeEnquiryid")},
    *      inverseJoinColumns={@JoinColumn(name="accessoryid", referencedColumnName="accessoryid", unique=true)}
    *      )
    **/ 
    private $accessories;

    public function __construct() {
        $this->accessories = new ArrayCollection();
    }
}

/** @Entity **/
class Frame
{
   /**
    * @OneToOne(targetEntity="BikeEnquiry")
    * @JoinColumn(name="BikeEnquiryid", referencedColumnName="BikeEnquiryid")
    **/
    private $frameid;
}

/** @Entity **/
class Wheel
{
   /**
    * @ManyToOne(targetEntity="BikeEnquiry")
    * @JoinColumn(name="BikeEnquiryid", referencedColumnName="BikeEnquiryid")
    **/
    private $wheelid;
}

/** @Entity **/
class Accessory
{
    private $accessoryid;
}

您应该仔细查看ERD实体关系图。但是在BikeEnquiry实体中,你应该和Frame有一对一的关系,也就是说一个BikeEnquiry必须有一个Frame。和轮子的一对多关系。说你可以有一个或多个轮子谢谢-我已经更新了我问题中的代码,正如你所指出的不,不要使用OneToOne。在这种情况下,只有一辆自行车可以有一个框架。下一个比基尼再也受不了了。很多人都很好。我发现您使用@而不是@ORM/注释,而最后一个注释在Symfony中很常见。使用不同的实体,如框架、车轮、座椅等。与使用一个附件实体相比,这是一个困难的决定,尽管我认为我应该选择最后一个。谢谢-我将在bikeOrder框架中改回ManyTone。我不能使用一个辅助实体作为“捕获全部”,因为数据库表中的每个实体都有其他字段。但对于我的附属实体,是否可以让用户向数据库表输入新术语?