2012-05-30 3 views
1

Я стараюсь работать с 2 классами: Activity и Mandate. A Mandate является Activity (так дети)Symfony 2: класс детей

Я хочу удалить мандат, щелкнув ссылку с идентификатором мандата.

Так вот мои действия:

public function eraseAction($id = null) 
{ 
    $em = $this->container->get('doctrine')->getEntityManager(); 

    if (isset($id)) 
    { 
     // existing user edition : let's load its data 
     $mandate = $em->find('MyAppToolsBundle:Activity', $id); 

     if (!$mandate) 
     { 
      $message = 'Error while deleting the record'; 
     } 
     else 
     { 
     $mandate->setErase(true); 
     } 
    } 
    else 
    { 
     $message = 'erreur'; 
    } 

    return $this->container->get('templating')->renderResponse('MyAppToolsBundle:Admin:mandate.html.twig',array(
    'message' => $message));  
} 

Моя проблема заключается в том, что я могу искать только мой мандат своей родительской деятельности (потому что не имеют атрибута ID в мандате) Но метод setErase только для мандат, поэтому у меня есть ошибка.

Я должен выполнить поиск по мандату, выполнив поиск в Activity, но тогда я не могу использовать метод, который я создал только в классе Mandate.

Вот мой класс активность:

<?php 
    namespace MyApp\ToolsBundle\Entity; 
    use Doctrine\ORM\Mapping as ORM; 
    use Symfony\Component\Validator\Constraints as Assert; 

    /** 
    * @ORM\Entity 
    */ 
    class Activity 
    { 
     /** 
     * @ORM\GeneratedValue 
     * @ORM\Id 
     * @ORM\Column(type="integer") 
     */ 
     private $id; 

     /** 
     * @ORM\OneToMany(targetEntity="MyApp\ToolsBundle\Entity\Hour", mappedBy="activity") 
     */ 
     protected $hour; 

     /** 
     * @ORM\Column(type="string",length="255") 
     * @Assert\NotBlank() 
     * @Assert\MinLength(2) 
     */  
     private $name; 

     /** 
     * @ORM\Column(type="string",length="20") 
     * @Assert\NotBlank() 
     */  
     private $color; 

     /** 
     * Get id 
     * 
     * @return integer 
     */ 
     public function getId() 
     { 
      return $this->id; 
     } 

     /** 
     * Set name 
     * 
     * @param string $name 
     */ 
     public function setName($name) 
     { 
      $this->name = $name; 
     } 

     /** 
     * Get name 
     * 
     * @return string 
     */ 
     public function getName() 
     { 
      return $this->name; 
     } 

     /** 
     * Set color 
     * 
     * @param string $color 
     */ 
     public function setColor($color) 
     { 
      $this->color = $color; 
     } 

     /** 
     * Get color 
     * 
     * @return string 
     */ 
     public function getColor() 
     { 
      return $this->color; 
     } 
     public function __construct() 
     { 
      $this->hours = new \Doctrine\Common\Collections\ArrayCollection(); 
     } 

     /** 
     * Add hours 
     * 
     * @param Furter\OutilGestionBundle\Entity\Hour $hours 
     */ 
     public function addHour(\MyApp\ToolsBundle\Entity\Hour $hours) 
     { 
      $this->hours[] = $hours; 
     } 

     /** 
     * Get hours 
     * 
     * @return Doctrine\Common\Collections\Collection 
     */ 
     public function getHours() 
     { 
      return $this->hours; 
     } 

     /** 
     * Get hour 
     * 
     * @return Doctrine\Common\Collections\Collection 
     */ 
     public function getHour() 
     { 
      return $this->hour; 
     } 
    } 

И мой мандат класс:

<?php 
namespace MyApp\ToolsBundle\Entity; 
use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
*/ 
class Mandate extends Activity 
{ 

    /** 
    * @ORM\Column(type="date") 
    */ 
    private $startdate; 

    /** 
    * @ORM\Column(type="date") 
    */ 
    private $enddate; 

    /** 
    * @ORM\Column(type="boolean") 
    */ 
    private $erase = 0; 



    /** 
    * @ORM\OneToMany(targetEntity="MyApp\ToolsBundle\Entity\Hour", mappedBy="activity") 
    */ 
    protected $hour; 

    /** 
    * @ORM\OneToOne(targetEntity="MyApp\ToolsBundle\Entity\Client") 
    */ 
    private $client; 


    /** 
    * Set startdate 
    * 
    * @param date $startdate 
    */ 
    public function setStartdate($startdate) 
    { 
     $this->startdate = $startdate; 
    } 

    /** 
    * Get startdate 
    * 
    * @return date 
    */ 
    public function getStartdate() 
    { 
     return $this->startdate; 
    } 

    /** 
    * Set enddate 
    * 
    * @param date $enddate 
    */ 
    public function setEnddate($enddate) 
    { 
     $this->enddate = $enddate; 
    } 

    /** 
    * Get enddate 
    * 
    * @return date 
    */ 
    public function getEnddate() 
    { 
     return $this->enddate; 
    } 
    /** 
    * @var MyApp\ToolsBundle\Entity\Hour 
    */ 
    private $hours; 

    public function __construct() 
    { 
     $this->hours = new \Doctrine\Common\Collections\ArrayCollection(); 
    } 

    /** 
    * Add hours 
    * 
    * @param MyApp\ToolsBundle\Entity\Hour $hours 
    */ 
    public function addHour(\MyApp\ToolsBundle\Entity\Hour $hours) 
    { 
     $this->hours[] = $hours; 
    } 

    /** 
    * Get hours 
    * 
    * @return Doctrine\Common\Collections\Collection 
    */ 
    public function getHours() 
    { 
     return $this->hours; 
    } 

    /** 
    * Get hour 
    * 
    * @return Doctrine\Common\Collections\Collection 
    */ 
    public function getHour() 
    { 
     return $this->hour; 
    } 

    /** 
    * Set client 
    * 
    * @param MyApp\ToolsBundle\Entity\Client $client 
    */ 
    public function setClient(\MyApp\ToolsBundle\Entity\Client $client) 
    { 
     $this->client = $client; 
    } 

    /** 
    * Get client 
    * 
    * @return MyApp\ToolsBundle\Entity\Client 
    */ 
    public function getClient() 
    { 
     return $this->client; 
    } 

    /** 
    * Set erase 
    * 
    * @param boolean $erase 
    */ 
    public function setErase($erase) 
    { 
     $this->erase = $erase; 
    } 

    /** 
    * Get erase 
    * 
    * @return boolean 
    */ 
    public function getErase() 
    { 
     return $this->erase; 
    } 

} 
+0

Я думаю, вы забыли слово в своем посте. Я добавил в него местозаполнитель. Замените его отсутствующим словом или ничего, если вы ничего не забыли. – greg0ire

+0

Спасибо, greg0ire! – RaFF

+0

теперь имеет больше смысла :) – greg0ire

ответ

0

Спасибо за вашу помощь! Я наконец нашел свою проблему!

Я не знал, что вам нужно было положить @MappedSuperclass на суперкласс вместо сущности!

Это работает !!!

Какой день!

Смежные вопросы