我一直在涉足 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'";
使用学说,我创建了两个类 Fruits 和 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 .......
如果有人可以阐明如何使用学说 2.2 编写内部连接,那将是有帮助的。
编辑:
如果有人是 Doctrine 2 中的专家,可以使用两个表的 ion case 给出一个简单的工作示例,用于一对多关系Docblock Annotations
,其中第一个表中的主键是另一个表中的外键。谢谢