从Symfony 1.4中的学说构建内部联接

时间:2012-11-04 16:21:14

标签: php doctrine symfony-1.4

我有一个以这种方式定义的schema.yml文件:

email:
  actAs: { Timestampable: ~ }
  columns:
    id: { type: integer, notnull: true, unique: true, primary: true }
    correo: { type: string(255), notnull: true }
    nombre: { type: string(255), notnull: true }
    apellido: { type: string(255), notnull: true }

lista:
  actAs: { Timestampable: ~ }
  columns:  
    id: { type: integer, notnull: true, unique: true, primary: true }
    nombre: { type: string(255), notnull: true }
    descripcion: { type: string(255), notnull: false }

email_lista:
  actAs: { Timestampable: ~ }
  columns:
    email_id: { type: integer }
    lista_id: { type: integer }
  relations:
    email: { onDelete: CASCADE, local: email_id, foreign: id, foreignAlias: emailrelation }
    lista: { onDelete: CASCADE, local: lista_id, foreign: id, foreignAlias: listarelation }

然后,我尝试从电子邮件模型中获取不属于lista的所有记录,其中lista_id等于1。

这是emailTable.php类的方法:

 public function getEmailsNotBlacklist()
    {
   $q = $this->createQuery('c')        
       ->leftJoin('c.email_lista m')
       ->Where('m.lista_id != ?',1);
       ->orderBy('m.lista_id ASC');       

   return $q->execute();
     }

结果是错误:

Error

可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

以下是不会出现错误的代码:

       public function getEmailsNotBlacklist()
       {
    $q = Doctrine_Query::create()        
       ->from('email sr')
       ->innerJoin('sr.emailrelation m' )
       ->Where('m.lista_id <> ?',1);
       //->orderBy('m.lista_id ASC');        

  return $q->execute();
}  

我错误的是,foreignAlias是连接中引用的内容,而不是模型的名称。