php - Doctrine 连接语法错误

标签 php mysql symfony doctrine-orm doctrine

我正在用我自己的框架编写我的 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/

相关文章:

php - 在 MySQL 中使用 JOIN 时避免出现歧义列错误

symfony - 如何使用routing.yml中的参数进行重定向?

php - jQuery .load() 停止使用 POST 参数

php动态生成图像映射坐标

php - 按标签选择博客文章

php - 在修订系统中提取所有语言的最新版本内容

php - 使用 JMS Serializer 反序列化混合类型的值

symfony - 如何添加 bundle ?

php - Laravel 查询生成器上的子查询 Where 条件

javascript - 在 Codeigniter 模式中将变量从 Javascript 传递到 href