AppBundle\\Entity\\User#$class_cat\",得到"整数"代替



嗨,我在数据库中插入数据时遇到此错误,请让我知道我在symfony中不熟悉的问题在哪里

"应用程序捆绑包\实体\Class_cat\"类型的预期值 关联字段 \"AppBundle\Entity\User#$class_cat\", get "整数"改为"整数"。 "class": "Doctrine\ORM\ORMInvalidArgumentException">

这是用户实体

namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
* User
*
* @ORMTable(name="user")
* @ORMEntity(repositoryClass="AppBundleRepositoryUserRepository")
*/
class User
{
/**
* Constructor
*/
public function __construct()
{
$this->class_cat = new DoctrineCommonCollectionsArrayCollection();
}
/**
* @var int
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORMColumn(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORMColumn(name="role", type="string", length=255)
*/
private $role;

/**
* @ORMManyToOne(targetEntity="Class_cat", inversedBy="users")
* @ORMJoinColumn(name="class_id", referencedColumnName="id")
*/
private $class_cat;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return User
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set role
*
* @param string $role
*
* @return User
*/
public function setRole($role)
{
$this->role = $role;
return $this;
}
/**
* Get role
*
* @return string
*/
public function getRole()
{
return $this->role;
}
/**
* @return mixed
*/
public function getClassCat()
{
return $this->class_cat;
}
/**
* @param mixed $class_cat
*/
public function setClassCat($class_cat)
{
$this->class_cat = $class_cat;
}

这是class_cat恩蒂

class Class_cat {
/**
* Constructor
*/
public function __construct()
{
$this->users = new DoctrineCommonCollectionsArrayCollection();
}
/**
* @var int
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORMColumn(name="class_name", type="string", length=255)
*/
private $className;
/**
* @ORMOneToMany(targetEntity="User", mappedBy="class_cat")
*/
protected $users;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set className
*
* @param string $className
*
* @return Class_cat
*/
public function setClassName($className)
{
$this->className = $className;
return $this;
}
/**
* Get className
*
* @return string
*/
public function getClassName()
{
return $this->className;
}

public function getUsers()
{
return $this->users;
}
/**
* @param mixed $users
*/
public function setUsers($users)
{
$this->users = $users;
}

这是控制器代码

>  public function postAction(Request $request)
>     {
>         $data = new User;
>         $name = $request->get('name');
>         $role = $request->get('role');
>         $class = $request->get('class_id');
>         if (empty($name) || empty($role) || empty($class)) {
>             return new View("NULL VALUES ARE NOT ALLOWED", Response::HTTP_NOT_ACCEPTABLE);
>         }
>         $data->setName($name);
>         $data->setRole($role);
>         $data->setClassId(1);
>         $em = $this->getDoctrine()->getManager();
>         $em->persist($data);
>         $em->flush();
>         return new View("User Added Successfully", Response::HTTP_OK);
>     }

您需要传递实体而不是 id,例如:

$em = $this->getDoctrine()->getManager();
$classCat = $em->getRepository('AppBundle:ClassCat')->find(1);
$data->setClassCat($classCat);

嗨,您需要传递类Class_cat的对象,而不是传递整数值。 当你将任何实体字段映射到任何其他实体时,symfony需要设置对象。 因此,您的解决方案很容易尝试如下:

public function postAction(Request $request){
$em = $this->getDoctrine()->getManager();
$data = new User;
$name = $request->get('name');
$role = $request->get('role');
$class = $request->get('class_id');
if (empty($name) || empty($role) || empty($class)) {
return new View("NULL VALUES ARE NOT ALLOWED", 
Response::HTTP_NOT_ACCEPTABLE);
}
$classCat = $em->getRepository('AppBundle:ClassCat')->find($class);
$data->setName($name);
$data->setRole($role);
$data->setClassId($classCat);
$em->persist($data);
$em->flush();
return new View("User Added Successfully", Response::HTTP_OK);
}

而不是整数值 像这样使用对象:

$data->setClassId(1);
$em = $this->getDoctrine()->getManager();
$classCat = $em->getRepository('AppBundle:ClassCat')->find(1);
$data->setClassCat($classCat);

最新更新