我正在用我自己的框架编写我的 CMS,使用的是 doctrince 2.5+。
我的数据库表是这样的:
项目
表:
+---------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| owner_id | int(11) | NO | MUL | NULL | |
| item_id | int(7) | NO | MUL | NULL | |
| count | bigint(20) | NO | | NULL | |
| money | varchar(32) | NO | | NULL | |
| name | varchar(32) | NO | | NULL | |
+---------------------+-------------+------+-----+---------+-------+
人物
表:
+------------------------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+----------------------+------+-----+---------+-------+
| Id | int(11) | NO | PRI | 0 | |
| name | varchar(35) | NO | UNI | | |
| age | int | NO | | | |
+------------------------+----------------------+------+-----+---------+-------+
我声明了这样的模型:
Item.php
class Item{
/** @id @Column(type="integer", name="id")**/
public $id;
/** @Column(type="integer", name="owner_id")**/
public $owner_id;
/** @Column(type="integer", name = "item_id")**/
public $item_id;
/** @Column(type="bigint", name = "count")**/
public $count;
/** @Column(type="string", name = "money")**/
public $money;
/** @Column(type="string", name = "name")**/
public $name;
}
Pesron.php
class Person{
/** @id @Column(type="integer", name="Id")**/
public $id;
/** @Column(type="string", name="name", unique=true)**/
public $name;
/** @Column(type="integer", name="age")**/
public $age;
}
如上所述,我在这里没有关联。 我的 DQl 是:
$qb = $this->em->createQueryBuilder();
$qb->select('i.id,i.item_id,i.enchant_level, i.owner_id,p.char_name,p.id')
->from('Item','i');
$qb->join('Person','p','WITH','i.owner_id == p.id');
Doctrine 无法解析 DQL。
为什么???我查看了文档的文档,但不知道为什么。
没有 with
结果是错误的。
提前致谢。
最佳答案
Doctrine 是正确的 - 这不是有效的 DQL,因为您使用的是双等号 (==)。你可能想要这个:
$qb->join('Person','p','WITH','i.owner_id = p.id');
关于php - Doctrine 连接语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41177838/