2012-09-04 47 views
4

我在我的項目(user_role,grades,user_role_grades)中有多對多的關係。但我也有一個要求,不要從我的數據庫中刪除任何數據。所以,我在表中添加了一個狀態列,即連接2個表來創建多對多的關係。現在我想在在多對多關係中應用doctrine sql過濾器

$userRole->getGrades() 

只得到那些記錄,在統一表(user_role_grades)沒有狀態「0」。對於那些,我試圖使用原則的SQL過濾器。

namespace Bis\MpBundle\Filter; 
use \Doctrine\ORM\Mapping\ClassMetaData; 

class UserRoleGradeFilter extends \Doctrine\ORM\Query\Filter\SQLFilter 
{ 
    public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias) 
    { 
     if("Bis\DefaultBundle\Entity\UserRoleGrade" == $targetEntity->name){ 

      return $targetTableAlias . '.status != 0'; 
     } 

     return ''; 
    } 
} 

因此,它被稱爲,對二\ DefaultBundle \實體\ UserRole的,而不是雙\ DefaultBundle \實體\ UserRoleGrade實體。有沒有人有任何想法?

或者您可能有其他想法,我該怎麼做?

+0

你找到一個解決的辦法?我正在嘗試做類似的事情,並沒有採取任何解決方案。 –

回答

1

我不認爲這是可能的,因爲它直接附加SQL。 即使你想嘗試某事像SQL注入:

return $targetTableAlias . '.status != 0)) LEFT join the_other_table ON ' 
. $targetTableAlias . '.grades HAVING the_other_table.status = 0 (('; 

它可能會崩潰的說法一樣(())