Symfony FOSUserBundle и связь с продукцией/материалами

DevConf 2017 - 17 июня, для тех кто не хочет быть планктоном | VDS на SSD - скида 25% | 16 июня YiiConf - впервые в России

Тема в разделе "Symfony", создана пользователем BlackIce, 21 апр 2017.

  1. BlackIce

    BlackIce Новичок

    Сообщения:
    1
    Ваш город:
    Пологи, Запорожская область, Украина
    Adress:
    Polohy, Ukraine
    Country:
    Location on Map:
    Установил FOSUserBundle и настроил авторизацию. Теперь необходимо связать таблицы User и product. делаю так:
    NailsBundle\Entity\Nails (продукты)
    Код:
        /**
        * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="name")
        * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
        */
        protected $user;
        /**
         * Set user
         *
         * @param \AppBundle\Entity\User $user
         *
         * @return nails
         */
        public function setUser(\AppBundle\Entity\User $user = null)
        {
            $this->user = $user;
    
            return $this;
        }
    
        /**
         * Get user
         *
         * @return \AppBundle\Entity\User
         */
        public function getUser()
        {
            return $this->user;
        }
    
    AppBundle\Entity\User
    Код:
    /**
        * @ORM\OneToMany(targetEntity="\NailsBundle\Entity\nails", mappedBy="user")
        */
        protected $name;
    
    
        /**
         * Add name
         *
         * @param \NailsBundle\Entity\nails $name
         *
         * @return User
         */
        public function addName(\NailsBundle\Entity\nails $name)
        {
            $this->name[] = $name;
    
            return $this;
        }
    
        /**
         * Remove name
         *
         * @param \NailsBundle\Entity\nails $name
         */
        public function removeName(\NailsBundle\Entity\nails $name)
        {
            $this->name->removeElement($name);
        }
    
        /**
         * Get name
         *
         * @return \Doctrine\Common\Collections\Collection
         */
        public function getName()
        {
            return $this->name;
        }
    Control:
    Код:
     //...............
                $user = $this->container->get('security.token_storage')->getToken()->getUser();
                $userId = $user->getId();       
                $nails -> setUser($userId);
    
                $em = $this->getDoctrine()->getManager();
                $em->persist($nails);
    
                $em->flush();       
    Итог:
    Код:
    Catchable Fatal Error: Argument 1 passed to NailsBundle\Entity\nails::setUser() must be an instance of AppBundle\Entity\User, integer given
    ругается на строку:
    Код:
    $nails -> setUser($userId);
    Помогите, где и что я не так сделал?
     
  2. WMix

    WMix герр M:)ller

    Сообщения:
    5.529
    Adress:
    Waiblingen, Germany
    Country:
    Location on Map:
    public function setUser(\AppBundle\Entity\User $user = null)
    $nails -> setUser($userId);
    Catchable Fatal Error: Argument 1 passed to NailsBundle\Entity\nails::setUser() must be an instance of AppBundle\Entity\User, integer given
     
  3. A1x

    A1x Новичок

    Сообщения:
    981
    Ваш город:
    Kiev
    Adress:
    Kiev, Ukraine
    Country:
    Location on Map:
    список продуктов в переменной name - за такое именование руки отрывать по самую голову
     
  4. scorpion-ds

    scorpion-ds Новичок

    Сообщения:
    959
    Ваш город:
    Kharkiv, Ukraine
    Adress:
    Kharkiv, Ukraine
    Country:
    Location on Map:
    В объект продукта необходимо передавать не ИД пользователя, а сам объект пользователя.