php - 如何理解Doctrine2里面的mappedBy和inversedBy???
高洛峰
高洛峰 2017-04-10 14:58:24
0
2
553

如何理解Doctrine2里面的mappedBy和inversedBy???

/** @Entity */
class Customer
{
// ...

/** * @OneToOne(targetEntity="Cart", mappedBy="customer") */ private $cart; // ...

}

/** @Entity */
class Cart
{
// ...

/** * @OneToOne(targetEntity="Customer", inversedBy="cart") * @JoinColumn(name="customer_id", referencedColumnName="id") */ private $customer; // ...

}

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답 (2)
洪涛

Doctrine是ORM;
ORM支持改变关联关系,如将小组的管理员由A变为B;
我们可以定义谁“拥有”这个关联关系,使关联就有了“方向”;
从而方便了逻辑和编码,即ORM只用检查“拥有”关联关系的对象上关联的变化(如小组的管理员现在是A还是B?)。

有inversedBy的,是“拥有”关联关系的一侧。

你贴出的代码中,

Customer与Cart之间的“谁的购物车”的关联关系,是由Cart拥有;在Customer对象上,改变其cart变量,通过Doctrine保存,并不会导致购物车易主。

以上,都是指不写额外代码,靠Doctrine自动识别的情形。

    Peter_Zhu

    Customer 和 Cart 關聯起來

    兩邊都可以簡單地調用對方

    /** * 從Customer中取得Cart的資料 * * @var Cart $cart */ $cart = $customer->getCart(); /** * 從Cart中取得Customer的資料 * * @var Customer $customer */ $customer = $cart->getCustomer();
      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!