代码之家  ›  专栏  ›  技术社区  ›  vimuth

“app\entity\search$user”关联字段的“app\entity\adminuser”类型的预期值,改为“integer”

  •  0
  • vimuth  · 技术社区  · 8 年前

    我想在symfony 4中使用manytoone。 这是我的搜索实体,

    <?php
    
    namespace App\Entity;
    
    use App\Model\BaseCar;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    use Symfony\Component\Validator\Constraints as Assert;
    use Swagger\Annotations as SWG;
    use JMS\Serializer\Annotation\Groups;
    
    /**
     * @ORM\Entity(repositoryClass="App\Repository\CarRepository")
     * @ORM\Table(name="search")
     * @UniqueEntity("id")
     */
    class Search extends BaseCar
    {
       /**
         * @ORM\ManyToOne(targetEntity="App\Entity\AdminUser",cascade={"refresh","merge"}, inversedBy="search")
         * @ORM\JoinColumn(nullable=false)
         */
        protected $user;
    
        public function getUser()
        {
            return $this->user;
        }
    
        public function setUser($user)
        {
            $this->user = $user;
    
            return $this;
        }
    }
    

    这是我的管理员实体。

    <?php
    
    namespace App\Entity;
    
    use App\Model\BaseUser;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    use Symfony\Component\Validator\Constraints as Assert;
    
    
    /**
     * @ORM\Entity(repositoryClass="App\Repository\AdminUserRepository")
     * @UniqueEntity("username")
     */
    class AdminUser extends BaseUser
    {
        /**
         * @ORM\Id()
         * @ORM\GeneratedValue()
         * @ORM\Column(type="integer")
         */
        protected $id;
    
        /**
         * @Assert\Email
         * @ORM\Column(type="string", length=190, unique=true)
         */
        protected $username;
    
        /**
         * @ORM\Column(type="string", length=190)
         */
        protected $password;
    
        /**
         * @ORM\Column(type="string", length=190, nullable=true)
         */
        protected $salt;
    
        /**
         * @ORM\Column(type="array")
         */
        protected $roles;
    
        /**
         * @ORM\Column(type="string", length=190)
         */
        protected $displayName;
    
        /**
         * @ORM\Column(type="string", length=190, nullable=true)
         */
        protected $token;
    
        /**
         * @ORM\Column(type="string", length=190, nullable=true)
         */
        protected $phoneNumber;
    
    
        /**
         * AdminUser constructor.
         */
        public function __construct($username = null, array $roles = array(self::ROLE_ADMIN) , $password = null,$displayName=null,$phoneNumber = null,  $salt=null)
        {
            parent::__construct($username, $roles,$password,$displayName,$phoneNumber, $salt);
        }
    
    
    }
    

    当我尝试这个的时候,

    $entityManager = $this->getDoctrine()->getManager();
            $search = new Search();
            $search->setType('jhkh');
            $search->setUser(1);
            $entityManager->persist($search);
            $entityManager->flush();
    

    但是我得到了这个错误,

    关联字段应为“app\entity\adminuser”类型的值 “app\entity\search$user”,改为“integer”。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Артем    7 年前

    $user = $entityManager->getRepository(AdminUser::class)->find(1);
    $search->setUser($user);
    
    推荐文章