瀏覽代碼

FD3-686 Se modifica el metodo de Profile para poder tener entidades de
bloqueo y de eliminacion al momento de eliminar un objeto y la entidad
Node y Cablemodem para poner en null el node_id de Cablemodem al
eliminar un Node.

Maximiliano Schvindt 6 年之前
父節點
當前提交
39ff8c49a1

+ 2 - 2
src/CablemodemBundle/Entity/Cablemodem.php

@@ -79,8 +79,8 @@ class Cablemodem implements DeviceInterface, TenancyIdTraitInterface, LocationIn
     protected $activationCode;
 
     /**
-     * @ORM\ManyToOne(targetEntity="Node", fetch="EXTRA_LAZY", cascade={"persist"})
-     *
+     * @ORM\ManyToOne(targetEntity="Node", fetch="EXTRA_LAZY")
+     * @ORM\JoinColumn(name="node_id", referencedColumnName="id", onDelete="SET NULL")
      * @JMS\MaxDepth(1)
      */
     protected $node;

+ 42 - 4
src/CablemodemBundle/Entity/Node.php

@@ -2,19 +2,21 @@
 
 namespace CablemodemBundle\Entity;
 
-use Base\AdminBundle\Interfaces\PreRemoveInterface;
+use Base\AdminBundle\Traits\TenancyIdTrait;
+use Base\AdminBundle\Traits\TenancyIdTraitInterface;
 use Doctrine\Common\Collections\ArrayCollection;
 use Doctrine\ORM\Mapping as ORM;
 use JMS\Serializer\Annotation as JMS;
 use Symfony\Component\Validator\Constraints as Assert;
 use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
-use Base\AdminBundle\Traits\TenancyIdTrait;
-use Base\AdminBundle\Traits\TenancyIdTraitInterface;
+use Base\AdminBundle\Interfaces\PreRemoveInterface;
+use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
+use Sonata\AdminBundle\Exception\ModelManagerException;
 
 /**
  * @ORM\Entity
  * @ORM\Table(uniqueConstraints={@ORM\UniqueConstraint(name="unique_idx", columns={"name","tenancy_id"})})
- *
+ * @ORM\HasLifecycleCallbacks
  * @UniqueEntity(fields={"tenancyId","name"})
  */
 class Node implements TenancyIdTraitInterface, PreRemoveInterface
@@ -51,6 +53,11 @@ class Node implements TenancyIdTraitInterface, PreRemoveInterface
      */
     protected $childs;
 
+    /**
+     * @ORM\OneToMany(targetEntity="Cablemodem", mappedBy="node", fetch="EXTRA_LAZY")
+     */
+    protected $cablemodems;
+
 
     /**
      * Constructor
@@ -58,6 +65,7 @@ class Node implements TenancyIdTraitInterface, PreRemoveInterface
     public function __construct()
     {
         $this->childs = new ArrayCollection;
+        $this->cablemodems = new ArrayCollection;
     }
 
     /**
@@ -157,5 +165,35 @@ class Node implements TenancyIdTraitInterface, PreRemoveInterface
 
         return $entities;
     }
+    
+    /**
+     * @param Cablemodem $cablemodem
+     * @return Node
+     */
+    public function addCablemodem(Cablemodem $cablemodem)
+    {
+        $this->cablemodems[] = $cablemodem;
+
+        return $this;
+    }
+
+    /**
+     * @param Cablemodem $cablemodem
+     * @return Node
+     */
+    public function removeCablemodem(Cablemodem $cablemodem)
+    {
+        $this->cablemodems->removeElement($cablemodem);
+
+        return $this;
+    }
+
+    /**
+     * @return Doctrine\Common\Collections\Collection
+     */
+    public function getCablemodems()
+    {
+        return $this->cablemodems;
+    }
 
 }

+ 1 - 1
src/CablemodemBundle/Entity/Profile.php

@@ -348,7 +348,7 @@ class Profile  implements TenancyIdTraitInterface, PreRemoveBlockCascadeInterfac
     /**
      * @return array
      */
-    public function getEntitiesForRemove()
+    public function getEntitiesBlockRemove()
     {
         $entities = [];
         if ($this->cablemodems->count() != 0) {