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

WBOY
发布: 2016-06-06 20:43:22
原创
1647 人浏览过

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

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

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

// ...
</code>
登录后复制
登录后复制

}

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

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

// ...
</code>
登录后复制
登录后复制

}

回复内容:

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

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

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

// ...
</code>
登录后复制
登录后复制

}

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

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

// ...
</code>
登录后复制
登录后复制

}

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

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

你贴出的代码中,

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

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

Customer 和 Cart 關聯起來

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

<code class="lang-php">/**
 * 從Customer中取得Cart的資料
 *
 * @var Cart $cart
 */
$cart = $customer->getCart();

/**
 * 從Cart中取得Customer的資料
 *
 * @var Customer $customer
 */
$customer = $cart->getCustomer();
</code>
登录后复制
相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板