【问题标题】:How do I use Doctrine 2.0 ORM models to select database data?如何使用 Doctrine 2.0 ORM 模型来选择数据库数据?
【发布时间】:2011-09-19 17:18:15
【问题描述】:

我最近开始学习使用 PHP 的 Doctrine 2.0 框架。现在我已经设法利用了一些 Doctrine 的东西(使用 MySQL),使用定义的 XML 模型插入了一些数据,但是现在我在选择数据时遇到了问题。在任何地方,包括 Doctrine 站点,我都发现 DQL 或原始 SQL 正在选择数据。但是这样一来,我就失去了 ORM 提供的一半优势。如何使用纯 ORM 选择数据,例如在 Java 中使用 Hibernate?

这是我正在使用的 Doctrine 网站的一些映射 XML 示例:

<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                    http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

      <entity name="Product" table="products">
          <id name="id" type="integer" column="product_id">
              <generator strategy="AUTO" />
          </id>

          <field name="name" column="product_name" type="string" />
      </entity>
</doctrine-mapping>

【问题讨论】:

  • 您阅读过association mappings 上的文档吗?您究竟想选择什么?
  • @Orbling:我还没有开始学习联想,现在我正在尝试找出如何检索数据。例如,在这里我想获取 Product 类的实例,就像我插入的一样(使用 EntityManager::persist())。
  • 那么从字面上按 ID 检索单个实体? $product = $entityManager-&gt;find('Product', 123); 最好在开始之前阅读所有文档。

标签: php mysql doctrine-orm


【解决方案1】:

读取数据的最简单方法是使用EntityManager-&gt;find(),您将要加载的类作为第一个参数(字符串)传递,该实体的ID 作为第二个参数。我最近自己开始使用 Doctrine 2,我能给你的最好建议是阅读上面链接到的所有文档 Orbling,并使用注释而不是 XML(至少从)。

HTH。

【讨论】:

  • 我会尝试使用它,谢谢建议。我习惯使用 Java Hibernate 中的 XML 映射,这对我来说更好。
  • @James:就像上面 Robin 说的和我在 cmets 中所说的那样,在真正开始之前,您必须阅读并消化 所有 文档。否则你最终会以一种尴尬的方式做事。
【解决方案2】:

一开始我也错过了那个,但重要的是要理解 DQL 不理解表的概念(阅读注释DQL is not SQL)它是纯粹的面向对象的查询。那就是您查询模型,而不是直接查询数据库。

手册本身声明 DQL “is very similar to the Hibernate Query Language”。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 2022-01-11
    相关资源
    最近更新 更多