使用Doctrine 2.2进行内连接查询

时间:2012-08-09 15:34:42

标签: mysql doctrine-orm

我一直在使用Doctrine 2.2,并一直关注Doctrine官方网站以熟悉它。我很惊讶将这个普通的mysql查询转换为DQL。

我有一个包含两个表的示例数据库:

**Table 1**
fruits:
fruit_id | fruit_name | fruit_type

**Table 2**
country:
country_id | country_name | fruit_id

我想通过提供水果名称来获取国家/地区的名称。通常这适用于mysql查询

"SELECT c.country_name FROM country c
 INNER JOIN fruits f 
 WHERE f.fruit_name = 'Apple'";

使用doctrine我创建了两个类Fruit和Country,它们是数据库中表的实体。我试过这种方式:

$dql = "SELECT c.country_name FROM Model\Country c
        INNER JOIN Model\Fruits f ON (c.fruit_id = f.fruit_id)
        WHERE f.fruit_name = 'Apple'";
$query = $em->createQuery($dql);
$result = $query->getArrayResult();

这给我一个错误:

Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message '[Semantical Error] line 0, col 76 near 'f ON (c.fruit_id': Error: Identification Variable Model\Fruits used in join path expression but was not defined before.' in .......

如果有人能够说明如何使用doctrine 2.2编写内部联接,那将会有所帮助。

修改 如果某人是Doctrine 2中的profi,可以使用两个表的Docblock Annotations离子情况为一对多关系提供一个简单的工作示例,其中第一个表中的主键是外来的键入另一个表。 感谢

0 个答案:

没有答案