Ответы пользователя по тегу Doctrine ORM
  • Проверить существует ли связанная сущность doctrine в twig?

    @tsifra Автор вопроса
    Перекопав инет выяснилось, что элегантного решения, судя по всему не существует.

    В итоге пишлось сделать так:

    public function getProduct()
        {
            try {
                $sku = $this->product->getSku();
            } catch (\Doctrine\ORM\EntityNotFoundException $e) {
                return null;
            }
            
            return $this->product;
        }


    Хотя это приводит к проблемам другого рода в случае необходимости получения poductId {{ item.product.productId }}

    Вот еще вариант. Установить fetch="EAGER" тогда сразу после инициализации корневой сущности в product будет попадать null

    /**
         * @var \Backend\SalesBundle\Entity\SalesOrder
         *
         * @ORM\ManyToOne(targetEntity="Backend\CatalogBundle\Entity\CatalogProduct", fetch="EAGER")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="product_id", referencedColumnName="product_id")
         * })
         */
        private $product;
    Ответ написан
    Комментировать
  • Как в doctrine2 присвоить полю null?

    @tsifra Автор вопроса
    <?php
    
    namespace Backend\WorkorderBundle\Entity;
    use Doctrine\Common\Collections\ArrayCollection;
    use Symfony\Component\Validator\Constraints as Assert;
    
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * Workorder
     *
     * @ORM\Table(name="workorder")
     * @ORM\Entity(repositoryClass="Backend\WorkorderBundle\Entity\WorkorderRepository")
     */
    class Workorder
    {
    //..
        /**
         * @var integer
         *
         * @ORM\Column(name="locked_by", type="integer", nullable=true)
         */
        private $lockedBy;
    
        /**
         * @var \DateTime
         *
         * @ORM\Column(name="locked_at", type="datetime", nullable=true)
         */
        private $lockedAt;
    //..
        public function __construct()
        {
            //здесь про эти два объекта ничего
        }
    //..
        /**
         * Set lockedBy
         *
         * @param integer $lockedBy
         * @return Workorder
         */
        public function setLockedBy($lockedBy)
        {
            $this->lockedBy = $lockedBy;
        
            return $this;
        }
    
        /**
         * Get lockedBy
         *
         * @return integer 
         */
        public function getLockedBy()
        {
            return $this->lockedBy;
        }
    //..


    если вместо null в этом коде ставить какие-то другие значения то БД без проблем обновляется.

    $object->setLockedBy(null);
    $object->setLockedAt(null);
    Ответ написан
    Комментировать