首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表中只有2个主键的Symfony3 doctrine2 ManyToMany无外接数据库

表中只有2个主键的Symfony3 doctrine2 ManyToMany无外接数据库
EN

Stack Overflow用户
提问于 2018-05-24 21:57:44
回答 1查看 51关注 0票数 0

我的数据库中有3个这样的表:文章:带有idArticle。Fournissor与idFournissor,在他们中间有"Got“谁是由1个PK(idFournissor,idArticle)组成的。

这是一种多对多的关系。此外,我有两个表单: ArticleType和FournissorType,在每个表单中,当我提交时,我的数据库中都有正确的值。然而,对于idArticle中的冠军idFournissor或idFournissor中的idArticle,它可以做任何事情。我解释:例如,文章形式:我必须为我的文章选择一个四分词,所以我选择了其中一个,但实际上在DB中它并没有保存什么东西。

我希望当我提交表单时,在"Got“中有文章id和fournissor的值。

这是我的实体文章,如果它能有所帮助的话:

代码语言:javascript
运行
复制
    use Doctrine\ORM\Mapping as ORM;

   /**
   * Article
   *
   * @ORM\Table(name="Article",indexe{@ORM\Index(name="I_FK_Article_TypeArticle", columns={"idTypeArticle"})})
   * @ORM\Entity
   */
  class Article
  {
    /**
     * @var integer
     *
     * @ORM\Column(name="idArticle", type="bigint")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idarticle;

    /**
     * @var string
     *
     * @ORM\Column(name="reference", type="string", length=35, nullable=true)
     */
    private $reference;

    /**
     * @var string
     *
     * @ORM\Column(name="designationFR", type="string", length=160, nullable=true)
     */
    private $designationfr;

    /**
     * @var string
     *
     * @ORM\Column(name="designationEN", type="string", length=160, nullable=true)
     */
    private $designationen;

    /**
     * @var string
     *
     * @ORM\Column(name="plan", type="string", length=70, nullable=true)
     */
    private $plan;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="dateCreation", type="date", nullable=true)
     */
    private $datecreation;

    /**
     * @var integer
     *
     * @ORM\Column(name="idProduit", type="bigint", nullable=true)
     */
    private $idproduit;

    /**
     * @var integer
     *
     * @ORM\Column(name="idSousEnsemble", type="bigint", nullable=true)
     */
    private $idsousensemble;

    /**
     * @var \gkeepBundle\Entity\Typearticle
     *
     * @ORM\ManyToOne(targetEntity="gkeepBundle\Entity\Typearticle")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="idTypeArticle", referencedColumnName="idTypeArticle")
     * })
     */
    private $idtypearticle;

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="gkeepBundle\Entity\Fournisseur", mappedBy="idarticle")
     */
    private $idfournisseur;

    /**
     * Constructor
     */
    public function __construct()
    {
        $this->idfournisseur = new \Doctrine\Common\Collections\ArrayCollection();
    }

实体四元组:

代码语言:javascript
运行
复制
/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToMany(targetEntity="gkeepBundle\Entity\Article", inversedBy="idfournisseur", cascade={"persist"})
 * @ORM\JoinTable(name="detient",
 *   joinColumns={
 *     @ORM\JoinColumn(name="idFournisseur", referencedColumnName="idFournisseur")
 *   },
 *   inverseJoinColumns={
 *     @ORM\JoinColumn(name="idArticle", referencedColumnName="idArticle")
 *   }
 * )
 */
private $idarticle;

文章实体:

代码语言:javascript
运行
复制
   /**
 * Add idfournisseur
 *
 * @param \gkeepBundle\Entity\Fournisseur $idfournisseur
 *
 * @return Article
 */
public function addIdfournisseur(\gkeepBundle\Entity\Fournisseur $idfournisseur)
{
    $idfournisseur->set($this);
    $this->idfournisseur[] = $idfournisseur;

    return $this;
}

Fournisseur实体:

代码语言:javascript
运行
复制
 /**
 * Add idarticle
 *
 * @param \gkeepBundle\Entity\Article $idarticle
 *
 * @return Fournisseur
 */
public function addIdarticle(\gkeepBundle\Entity\Article $idarticle)
{
    $this->idarticle[] = $idarticle;

    return $this;
}

希望我已经说清楚了,如果你不明白,请告诉我。感谢你的预支

EN

回答 1

Stack Overflow用户

发布于 2018-05-25 15:51:21

我认为“级联持久化”被忽略了。下面是一个示例:

代理用户可以拥有多个服务,服务可以拥有多个用户。

代码语言:javascript
运行
复制
 // It's Agency Entity
 /**
 * @var Service[]|ArrayCollection
 *
 * @ORM\ManyToMany(targetEntity="Service", inversedBy="agencyUsers", cascade={"persist"})
 * @ORM\JoinTable(name="agency_user_services",
 *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="service_id", referencedColumnName="id")}
 *      )
 */
protected $services;

 /**
 * Add services
 *
 * @param ServiceInterface $services
 * @return AgencyAdmin
 */
public function addService(ServiceInterface $services)
{
    $this->services[] = $services;

    return $this;
}

/**
 * Remove services
 *
 * @param ServiceInterface $services
 */
public function removeService(ServiceInterface $services)
{
    $this->services->removeElement($services);
}


//It's Service Entity
/**
 * @var AgencyAdmin[]|ArrayCollection
 * @ORM\ManyToMany(targetEntity="AgencyAdmin", mappedBy="services")
 */
protected $agencyUsers;

/**
 * Add agencyUsers
 *
 * @param AgencyAdmin $agencyUsers
 * @return Service
 */
public function addAgencyUser(AgencyAdmin $agencyUsers)
{
    $this->agencyUsers[] = $agencyUsers;

    return $this;
}

/**
 * Remove agencyUsers
 *
 * @param AgencyAdmin $agencyUsers
 */
public function removeAgencyUser(AgencyAdmin $agencyUsers)
{
    $this->agencyUsers->removeElement($agencyUsers);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50511238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档