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

发布于 2022-08-29 20:02:38 字数 465 浏览 14 评论 0

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

<?php
/** @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;

    // ...
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

守不住的情 2022-09-05 20:02:38

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

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

你贴出的代码中,

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

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

薆情海 2022-09-05 20:02:38

Customer 和 Cart 關聯起來

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

/**
 * 從Customer中取得Cart的資料
 *
 * @var Cart $cart
 */
$cart = $customer->getCart();

/**
 * 從Cart中取得Customer的資料
 *
 * @var Customer $customer
 */
$customer = $cart->getCustomer();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文