加入学说的问题



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

规则是:人们可能有很多项目。如上所述,即使在MySQL中,我也不会在PHP模型中使用外键。减少数据的原因是从mySQL获得。但是现在我以这样的加入来反驳SQL。

SELECT i.*,p.name as Owner FROM Item i JOINT Person p on i.owner_id = p.Id

我看一下加入查询以及stackoverflow上的问题我来到这个DQL:

$qb = $this->em->createQueryBuilder();  
            $qb->select('i')
            ->from('item','i')->join('a.person', 'p');

我知道这个DQL是错误的。因为我在item表上没有character属性。 请给我一个关于DQL的提示。 如果不能,那么我认为我会使用纯SQL,我不想这样做。 请再次。 预先感谢。

您写的:

$qb->select('i')
            ->from('item','i')->join('a.character', 'u');

为什么要使用'a'和'u'?您至少了解您在写什么吗?您不能参考这样的随机字母。

别名'i'仅使用,因为您将i定义为fromitem的别名。

->leftJoin('character', 'cha', 'i.owner_id = cha.id')

在此典范中,我为character定义了一个别名'cha',然后您可以使用' cha'来使JOIN

相关内容

  • 没有找到相关文章

最新更新