这是我的数据库:
当我尝试使用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
有什么问题? 感谢。
答案 0 :(得分:0)
应为->innerJoin('p.richiestepreventivo as r ON p.id=r.idPrivato ')
更新:尝试
$qr = Doctrine_Query::create()
->select('*')
->from('privati p')
->innerJoin('p.richiestepreventivo r ON p.id=r.idPrivato ')
->where('r.idImpresa=' . $idI);
我有一些几乎相同的工作代码,其中没有as
。而且,为了以防万一,请检查生成的模型类,DQL区分大小写。从你的YAML可以清楚地知道它们应该是小写的,但也许有人将它们重命名。
答案 1 :(得分:0)
$qr = Doctrine_Query::create()
->select('r.data_invio,j.*')
->from('richiestepreventivo r')
->innerJoin('r.idPrivato j');