2015-09-30 25 views
1

我有實體和我用Symfony的SoftDeleteable

* @Gedmo\SoftDeleteable(fieldName="deletedAt") 

,當我在我的數據庫中刪除某些實體我有我的實體,並在現場deletedAt我有當我刪除的實體,這是確定的時間。但現在我需要找到所有的deleteAt實體?我創建QB

$qb = $this->getEntityManager()->createQueryBuilder('d'); 
$qb 
    ->select('d') 
    ->from('ArtelProfileBundle:Project', 'd') 
    ->where('d.deletedAt IS NOT NULL'); 

$count = $qb->getQuery()->getResult(); 
$query = $qb->getQuery(); 
$results = $query->getResult(); 
return [$results, $count]; 

我有0個實體,爲什麼以及如何找到實體?

UPDATE 在我的控制器

class ProjectController extends FOSRestController 
{ 
public function getProjectsAction(ParamFetcher $paramFetcher) 
{ 
$manager = $this->getDoctrine()->getManager(); 
     if($paramFetcher->get('status')) 
    { 
     $manager->getFilters()->disable('soft-deleteable'); 
     $queryBuilder = $manager->getRepository('ArtelProfileBundle:Project')->findForStatusProject($paramFetcher, $this->getUser()); 
    } 

,我有錯誤

Filter 'soft-deleteable' is not enabled. 

我的實體

/** 
* Project 
* 
* @ORM\Table(name="project") 
* @Gedmo\SoftDeleteable(fieldName="deletedAt") 
* @ORM\Entity(repositoryClass="Artel\ProfileBundle\Entity\Repository\ProjectRepository") 
* @ExclusionPolicy("all") 
*/ 
class Project 
{ 
///// 
/** 
* @var \DateTime $deletedAt 
* 
* @ORM\Column(name="deleted_at", type="datetime", nullable=true) 
* @Type("DateTime") 
* @Expose() 
*/ 
protected $deletedAt; 

幫助,請

+2

您需要使用'$ entityManager-> getFilters() - > disable('soft-deleteable')'來禁用過濾器在文檔中說 - https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/softdeleteable.md#setup-and-autoloading。否則它們將永遠不會找到它們,因爲它們被「刪除」。 – qooplmao

+0

我需要在實體存儲庫中禁用過濾器我可以嗎? –

+0

在創建查詢之前。 – qooplmao

回答

0

解決 那簡直就是我在我的配置,並在我的代碼

 filters: 
     softdeleteable: 
      class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter 
      enabled: true 
stof_doctrine_extensions: 
default_locale: "%locale%" 
orm: 
    default: 
     timestampable: true 
     sluggable:  true 
     softdeleteable: true 

使用,然後在我的動作我做

$manager->getFilters()->disable('softdeleteable'); 

去把我刪除

實體名稱之間的不匹配
0

它已經有一段時間,調試FilterColletion類我發現了一個簡單的解決方案

$管理器 - > getFilters() - >禁用( 'soft_deleteable'); //(使用破折號代替減號,最後一個被解析爲短劃線)