2012-11-04 14 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