我正在用我自己的框架使用doctrince 2.5+编写我的CMS。加入原则的问题
我的数据库表是这样的:
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获得的数据。 但现在我用这样的JOIN反击SQL。
SELECT i.*,p.name as Owner FROM Item i JOINT Person p on i.owner_id = p.Id
我承担Join query当a question on stackoverflow 一看,我来到这DQL:
$qb = $this->em->createQueryBuilder();
$qb->select('i')
->from('item','i')->join('a.person', 'p');
我知道这DQL是错误的。因为我在item
表上没有character
属性。 请给我一个关于DQL的提示。 如果不能那么我想我会使用纯SQL,我不想这样做。 请再说一遍。 在此先感谢。
请重新字你的问题,因为目前还不清楚你问 - 你想只将该SQL查询翻译成DQL吗?那里有什么'a.character'(任何地方都没有列'character'的列!)?你在哪里解释你的表和实体的样子是好的,但之后的文本/问题对我来说是非常不清楚的(无论如何)... – MikO