1

と の 2 つのクラスで作業しようとしていActivityますMandate。AMandateActivity(だから子供です)

委任の ID のリンクをクリックして、委任を消去したいと考えています。

だからここに私の行動があります:

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 を探して委任を検索する必要がありますが、委任クラスで作成したメソッドしか使用できません。

これが私のクラスのアクティビティです:

   <?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;
    }

}
4

1 に答える 1

0

ご協力ありがとうございました !私はついに私の問題を見つけました!

@MappedSuperclassEntity の代わりにスーパークラスを使用する必要があるとは知りませんでした。

それは働いています!!!

なんて日だ!

于 2012-05-30T22:23:15.267 に答える