我用自己的框架编写CMS,使用doctrince 2.5 +。
我的数据库表如下:
Item
表:
+---------------------+-------------+------+-----+---------+-------+
| 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 | |
+---------------------+-------------+------+-----+---------+-------+
Person
表:
+------------------------+----------------------+------+-----+---------+-------+
| 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
,结果就是错误的。
提前谢谢。
答案 0 :(得分:3)
Doctrine是对的 - 因为你使用的是双等号(==),所以它不是有效的DQL。你可能想要这个:
$qb->join('Person','p','WITH','i.owner_id = p.id');