Heim > Backend-Entwicklung > PHP-Tutorial > 如何理解Doctrine2里面的mappedBy和inversedBy???

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

WBOY
Freigeben: 2016-06-06 20:43:22
Original
1675 Leute haben es durchsucht

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

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

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

// ...
</code>
Nach dem Login kopieren
Nach dem Login kopieren

}

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

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

// ...
</code>
Nach dem Login kopieren
Nach dem Login kopieren

}

回复内容:

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

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

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

// ...
</code>
Nach dem Login kopieren
Nach dem Login kopieren

}

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

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

// ...
</code>
Nach dem Login kopieren
Nach dem Login kopieren

}

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>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage