php - 获取 Doctrine 2 中的相关条目

标签 php database doctrine-orm

我认为熟悉 ORM 是一项很好的 Assets ,并选择了 Doctrine 2 作为 ORM 的选择。

我正在做一个测试项目来学习 Doctrine 的基础知识。虽然大多数人通常会使用博客,但我决定制作一个基本应用程序,您可以在其中保存和跟踪订单。我的数据库架构如下:

User
    id
    name
Product
    id
    name
    price
Sales_order
    id
    user_id
    product_id
    quantity
    unit_price

因此,我的订单模型如下所示:

/**
 * @Entity
 * @Table(name="sales_order")
 */
class Order {

    /**
     * @Id
     * @Column(type="integer", nullable=false)
     * @GeneratedValue(strategy="AUTO")
     */
    private $Id;

    /**
     * @OneToOne(targetEntity="User", inversedBy="user")
     */
    private $user;

    /**
     * @OneToOne(targetEntity="Product", inversedBy="product")
     */
    private $product;

    /**
     * @Column(type="integer", nullable=false)
     */
    private $quantity;
}

现在的问题是,是否有一种简单的方法可以从用户模型访问所有订单?我应该为这些基本的东西编写 DQL(原则查询语言)还是有办法轻松获取关联实体?我的意思是,否则就没有任何意义,对吧?另外,我是否正确地进行了这些关联?我真的对这个非常基本的模型感到困惑......非常感谢详细的帮助。谢谢。

最佳答案

首先,不要太担心数据库设计。您应该设计您的实体并使用 SchemaTool .

Now, the question is, is there a simple way of accessing all the orders from the user model?

您是指访问用户模型中的所有订单,还是访问与用户关联的所有订单?

如果您指的是前者,那么您就做错了(见下文)。如果你的意思是后者,你应该设置一个 bi-directional relationship订单和用户之间。 (顺便说一句,这将是 OneToMany 而不是 OneToOne,因为一个用户可能有很多订单)。


I'm really confused in this very basic model...

我认为您和许多 PHP 程序员遇到的问题是对 DataMapper pattern 的基本理解。最后还有领域驱动设计。请记住,您正在处理持久对象,而不是数据库表。

我无法在此处提供详细信息,因为我正在写一本书,因此我建议您获得一本关于领域驱动设计的书,以帮助您开始了解这些原则。有一些很好的在线资源可用,例如 Federico Cargnelutti 的一系列博客文章。 ,但是它们并不特定于 Doctrine 2。

关于php - 获取 Doctrine 2 中的相关条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4928170/

相关文章:

php - 使用 http 请求程序,我可以发送键和值,但是当我通过浏览器发送相同的 url/编码值时,它无法接受值

php - Highchart - 显示 JSON 数据 - MYSQL/PHP

database - 估计加入关系的大小

sql - 如何创建一个等于最后插入行的id的临时变量

php - 如何使用 doctrine2 创建数据库?

doctrine - 在 Doctrine 2 中查找或创建(更新插入)功能

php - 无需刷新的 Ajax 发布

php - Laravel 使用碳获取当前季度

php - 使用 PHP 和 MySql 数据库设置网页标题

php - 我正在失去错误与 Symfony2 中表单字段的关联