Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Doctrine 2.0 ORM模型选择数据库数据?_Php_Mysql_Doctrine Orm - Fatal编程技术网

Php 如何使用Doctrine 2.0 ORM模型选择数据库数据?

Php 如何使用Doctrine 2.0 ORM模型选择数据库数据?,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我最近开始学习如何使用Doctrine 2.0 PHP框架。现在我已经设法利用了一些原则(使用MySQL),使用定义的XML模型插入了一些数据,但是现在我在选择数据方面遇到了问题。在任何地方,包括Doctrine站点,我都发现数据是由DQL或原始SQL选择的。但这样一来,我就失去了ORM提供的一半优势。我如何使用纯ORM选择数据,例如我可以使用Java中的Hibernate 下面是我正在使用的Doctrine站点中的一些映射XML示例: <?xml version="1.0" encodi

我最近开始学习如何使用Doctrine 2.0 PHP框架。现在我已经设法利用了一些原则(使用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>

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


HTH.

一开始我也错过了这一点,但重要的是要理解DQL不理解表的概念(阅读说明),它纯粹是面向对象的查询。这就是查询模型,而不是直接查询数据库


手册本身说明“DQL”。

您是否阅读了上的文档?你到底想选择什么?@Orbling:我还没有开始学习联想,现在我正试图找出如何检索数据。例如,在这里,我想得到产品类的实例,和我插入的(使用EntityManager::persist())一样<代码>$product=$entityManager->查找('product',123)最好在开始之前阅读所有文档。我将尝试使用它,thx提供建议。我习惯于使用Java Hibernate的XML映射,这对我来说是更好的习惯。@James:就像Robin在上面说的和我在评论中说的,在真正开始之前,你必须阅读和消化所有文档。否则你会以一种尴尬的方式结束工作。