内部连接上的学说未知关系别名
这是我的数据库:
当我尝试使用 mysql 时,此查询一切顺利:
SELECT *
FROM privati AS p
INNER JOIN richiestepreventivo AS r
ON p.id = r.idPrivato
WHERE r.idImpresa = xx
但如果我这样做:
$qr = Doctrine_Query::create()
->select('*')
->from('privati as p')
->innerJoin('richiestepreventivo as r ON p.id=r.idPrivato ')
->where('r.idImpresa=' . $idI);
但给了我这个错误:
Unknown relation alias
这是我的 YAML 文件:
---
detect_relations: true
options:
collate: latin1_swedish_ci
charset: latin1
type: InnoDB
exclienti:
columns:
id:
type: integer(4)
primary: true
notnull: true
regione:
type: string(25)
notnull: true
data_reg:
type: date
notnull: true
default: '0000-00-00'
provincia:
type: string(2)
notnull: true
azienda:
type: string(25)
notnull: true
telefono:
type: string(25)
notnull: true
email:
type: string(25)
notnull: true
RM:
type: integer(4)
notnull: true
p1:
type: string(2)
notnull: true
p2:
type: string(2)
notnull: true
p3:
type: string(2)
notnull: true
p4:
type: string(2)
notnull: true
p5:
type: string(2)
notnull: true
p6:
type: string(2)
notnull: true
p7:
type: string(2)
notnull: true
p8:
type: string(2)
notnull: true
note:
type: string(255)
notnull: true
prevInviati:
type: integer(4)
notnull: true
default: '0'
nIscrizioni:
type: integer(4)
notnull: true
default: '0'
idImpresa:
type: integer(4)
notnull: true
data_form:
type: date
notnull: true
default: '0000-00-00'
options:
charset: latin1
imprese:
columns:
id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
regione:
type: string(25)
notnull: true
data_form:
type: date
notnull: true
data_reg:
type: date
default: '0000-00-00'
provincia:
type: string(2)
notnull: true
azienda:
type: string(25)
notnull: true
telefono:
type: string(25)
notnull: true
email:
type: string(25)
notnull: true
RM:
type: integer(4)
default: '0'
p1:
type: string(2)
notnull: true
default: ''
p2:
type: string(2)
notnull: true
default: ''
p3:
type: string(2)
notnull: true
default: ''
p4:
type: string(2)
notnull: true
default: ''
p5:
type: string(2)
notnull: true
default: ''
p6:
type: string(2)
notnull: true
default: ''
p7:
type: string(2)
notnull: true
default: ''
p8:
type: string(2)
notnull: true
default: ''
note:
type: string(255)
default: ''
prevInviati:
type: integer(4)
notnull: true
default: '0'
nIscrizioni:
type: integer(4)
default: '0'
options:
charset: latin1
privati:
columns:
id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
data:
type: date
default: null
regione:
type: string(20)
default: null
provincia:
type: string(20)
default: null
nome:
type: string(25)
default: null
telefono:
type: string(25)
notnull: true
email:
type: string(30)
default: null
richiesta:
type: string(255)
default: null
cod1:
type: integer(4)
default: '0'
cod2:
type: integer(4)
default: '0'
cod3:
type: integer(4)
default: '0'
cod4:
type: integer(4)
default: '0'
cod5:
type: integer(4)
default: '0'
note:
type: string(255)
default: null
options:
charset: latin1
richiestepreventivo:
columns:
id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
idPrivato:
type: integer(4)
notnull: true
idImpresa:
type: integer(4)
notnull: true
data_invio:
type: date
notnull: true
relations:
idImpresa:
class: imprese
local: idImpresa
foreign: id
foreignAlias: richiestepreventivoes
onDelete: cascade
idPrivato:
class: privati
local: idPrivato
foreign: id
foreignAlias: richiestepreventivoes
indexes:
1 impresa piu richieste preventivo:
fields: [idImpresa]
FKRichiesteP160761:
fields: [idPrivato]
options:
charset: latin1
出了什么问题? 谢谢。
this is my database:
When I try with mysql this query all goes good:
SELECT *
FROM privati AS p
INNER JOIN richiestepreventivo AS r
ON p.id = r.idPrivato
WHERE r.idImpresa = xx
But If I do:
$qr = Doctrine_Query::create()
->select('*')
->from('privati as p')
->innerJoin('richiestepreventivo as r ON p.id=r.idPrivato ')
->where('r.idImpresa=' . $idI);
But gives me this error:
Unknown relation alias
This is my YAML file:
---
detect_relations: true
options:
collate: latin1_swedish_ci
charset: latin1
type: InnoDB
exclienti:
columns:
id:
type: integer(4)
primary: true
notnull: true
regione:
type: string(25)
notnull: true
data_reg:
type: date
notnull: true
default: '0000-00-00'
provincia:
type: string(2)
notnull: true
azienda:
type: string(25)
notnull: true
telefono:
type: string(25)
notnull: true
email:
type: string(25)
notnull: true
RM:
type: integer(4)
notnull: true
p1:
type: string(2)
notnull: true
p2:
type: string(2)
notnull: true
p3:
type: string(2)
notnull: true
p4:
type: string(2)
notnull: true
p5:
type: string(2)
notnull: true
p6:
type: string(2)
notnull: true
p7:
type: string(2)
notnull: true
p8:
type: string(2)
notnull: true
note:
type: string(255)
notnull: true
prevInviati:
type: integer(4)
notnull: true
default: '0'
nIscrizioni:
type: integer(4)
notnull: true
default: '0'
idImpresa:
type: integer(4)
notnull: true
data_form:
type: date
notnull: true
default: '0000-00-00'
options:
charset: latin1
imprese:
columns:
id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
regione:
type: string(25)
notnull: true
data_form:
type: date
notnull: true
data_reg:
type: date
default: '0000-00-00'
provincia:
type: string(2)
notnull: true
azienda:
type: string(25)
notnull: true
telefono:
type: string(25)
notnull: true
email:
type: string(25)
notnull: true
RM:
type: integer(4)
default: '0'
p1:
type: string(2)
notnull: true
default: ''
p2:
type: string(2)
notnull: true
default: ''
p3:
type: string(2)
notnull: true
default: ''
p4:
type: string(2)
notnull: true
default: ''
p5:
type: string(2)
notnull: true
default: ''
p6:
type: string(2)
notnull: true
default: ''
p7:
type: string(2)
notnull: true
default: ''
p8:
type: string(2)
notnull: true
default: ''
note:
type: string(255)
default: ''
prevInviati:
type: integer(4)
notnull: true
default: '0'
nIscrizioni:
type: integer(4)
default: '0'
options:
charset: latin1
privati:
columns:
id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
data:
type: date
default: null
regione:
type: string(20)
default: null
provincia:
type: string(20)
default: null
nome:
type: string(25)
default: null
telefono:
type: string(25)
notnull: true
email:
type: string(30)
default: null
richiesta:
type: string(255)
default: null
cod1:
type: integer(4)
default: '0'
cod2:
type: integer(4)
default: '0'
cod3:
type: integer(4)
default: '0'
cod4:
type: integer(4)
default: '0'
cod5:
type: integer(4)
default: '0'
note:
type: string(255)
default: null
options:
charset: latin1
richiestepreventivo:
columns:
id:
type: integer(4)
primary: true
notnull: true
autoincrement: true
idPrivato:
type: integer(4)
notnull: true
idImpresa:
type: integer(4)
notnull: true
data_invio:
type: date
notnull: true
relations:
idImpresa:
class: imprese
local: idImpresa
foreign: id
foreignAlias: richiestepreventivoes
onDelete: cascade
idPrivato:
class: privati
local: idPrivato
foreign: id
foreignAlias: richiestepreventivoes
indexes:
1 impresa piu richieste preventivo:
fields: [idImpresa]
FKRichiesteP160761:
fields: [idPrivato]
options:
charset: latin1
What is wrong?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它应该是
->innerJoin('p.richiestepreventivo as r ON p.id=r.idPrivato ')
更新: 尝试
我有一些工作代码几乎可以完成相同,并且其中没有
as
。并且,为了以防万一,请检查您生成的模型类,DQL 区分大小写。从您的 YAML 中可以清楚地看出它们应该是小写的,但也许有人重命名了它们。It should be
->innerJoin('p.richiestepreventivo as r ON p.id=r.idPrivato ')
UPDATE: try
I have some working code that do almost the same and there is no
as
in it. And, just in case, please check your generated model classes, DQL is case-sensitive. From your YAML it is clear they should be lowercase, but maybe somebody renamed them.