2012-11-04 18 views
0

我有这样定义的一个文件的schema.yml:建筑内,从教义中加入1.4 Symfony的

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_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

什么导致此?

+0

我不熟悉那里的YML语法(通常不使用大括号样式),但我不明白你的关系如何知道“email”是模型“email”它不需要: 'email:{model:email,onDelete:CASCADE,local:email_id,foreign:id,foreignAlias:email}' –

+0

关系的名称必须与模型的名称完全一致。在这种情况下,模型是电子邮件。我认为问题是给该模型一个电子邮件的别名。这会造成混乱。 – haroldmoma

+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是什么,是在加入被引用,而不是模型的名称。

+0

顺便说一句,我将关系名称从email和lista分别改为emailrelation和listarelation以避免混淆。 – haroldmoma