4

J'utilise le filtre Gedmo SoftDeletable pour Symfony2 et Doctrine (https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md)Symfony2 Doctrine SoftDeletable et JMSSerializerBundle ne travaillent pas ensemble

J'utilise aussi la JMSSerializerBundle sérialiser reponses à JSON pour mon API REST. Dès que je "softdelete" une entreprise ma fonction de demander toutes les entreprises ne fonctionne plus car elle déclenche une exception Entité non trouvée ... Y at-il un moyen de s'assurer que JMSSerializerBundle ignore les entités logicielles supprimées ma base de données?

fonction My all() ressemble à ceci:

/** 
* All action 
* @return array 
* 
* @Rest\View 
*/ 
public function allAction() 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $entities = $em->getRepository('TestCRMBundle:Company')->findAll(); 

    return array(
     'companies' => $entities, 
    ); 
} 

Répondre

1

besoin d'ajouter config

orm: 
    filters: 
     softdeleteable: 
      class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter 
      enabled: true 

et ajouter aux entités

use Gedmo\Mapping\Annotation as Gedmo; 

* @ORM\HasLifecycleCallbacks 
* @Gedmo\SoftDeleteable(fieldName="deletedAt") 
+0

cool qui ils ont ajouté cela! – Simon

3

Il est actuellement pas pris en charge en raison de la relation imbriquée, il n'y a rien que vous pouvez faire pour l'instant.

Cependant, vous pouvez désactiver le comportement SoftDeletable:

/** 
* All action 
* @return array 
* 
* @Rest\View 
*/ 
public function allAction() 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $em->getFilters()->disable('softdeletable'); // Disable the filter 

    $entities = $em->getRepository('TestCRMBundle:Company')->findAll(); 

    return array(
     'companies' => $entities, 
    ); 
} 

attention, il retournera TOUS, même SUPPRIMÉS entités.

Questions connexes