开发者

doctrine unknow relation alias on innerjoin

this is my database:

doctrine unknow relation alias on innerjoin

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)
  开发者_StackOverflow中文版    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.


It should be ->innerJoin('p.richiestepreventivo as r ON p.id=r.idPrivato ')

UPDATE: try

$qr = Doctrine_Query::create()
            ->select('*')
            ->from('privati p')
            ->innerJoin('p.richiestepreventivo r ON p.id=r.idPrivato ')
            ->where('r.idImpresa=' . $idI);

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.


    $qr = Doctrine_Query::create()
            ->select('r.data_invio,j.*')
            ->from('richiestepreventivo r')
            ->innerJoin('r.idPrivato j');
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜