gpt4 book ai didi

symfony - 如何避免依赖来自不同包的实体

转载 作者:行者123 更新时间:2023-12-04 05:13:07 26 4
gpt4 key购买 nike

我的应用程序中有几个包,我想在表之间建立关系。
一个是我在 UserBundle 中的 User(StoreOwner),第二个是 StoreBundle 中的 Store。

它们之间的关系是 OneToMany(用户 -> 是所有者 -> 商店)。

店铺

/**
* Description of Store
*
* @ORM\Table(name="Store")
* @ORM\Entity(repositoryClass="Traffic\StoreBundle\Repository\StoreRepository")
* @author bart
*/
class Store extends StoreModel {

/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @var string $name
*
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank(
* message="Please provide your shop name"
* )
*/
protected $name;


/**
* @ORM\ManyToOne(targetEntity="Application\Sonata\UserBundle\Entity\StoreOwner", inversedBy="stores")
*
*/
protected $owner;

}

店主
/**
* @ORM\Entity
*
*/
class StoreOwner extends User implements StoreOwnerInterface {

/**
* @var type ArrayCollection()
*
* @ORM\OneToMany(targetEntity="Traffic\StoreBundle\Entity\Store", mappedBy="owner", cascade={"persist"})
*/
protected $stores;

}

我的问题是:

是否有任何解决方案可以避免 StoreBundle 和 UserBundle 之间的依赖关系并在 Doctrine 中保持实体之间的关系?

最佳答案

在我看来,这是一个合理的担忧。捆绑包之间的双向依赖是一种气味。

解决依赖性问题的一种方法是将实体从包中移到更通用的命名空间中。这样两个包都将依赖于同一个“库”,但不会直接相互依赖。

我最近写了一篇关于如何做的博客文章:How to store Doctrine entities outside of a Symfony bundle?

关于symfony - 如何避免依赖来自不同包的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14645843/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com