当单元格与另一个表相关时,如何创建新对象?在我的情况下,存在一个状态表,如id = 1,state = active; id = 2,state = inactive。
我的实体/ States.php
class States
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
....
实体/ user.php的
....
/**
* Set state
*
* @param \Frontend\AccountBundle\Entity\States $state
* @return User
*/
public function setState(\Frontend\AccountBundle\Entity\States $state = null)
{
$this->state = $state;
return $this;
}
我的AccountController:
....
$user = new User();
$em = $this->get('doctrine')->getEntityManager();
$state = $this->getDoctrine()->getRepository('FrontendAccountBundle:States')->find(1);
$user->setEmail($formData->getEmail());
$user->setStateId(1);
$em->persist($user);
$em->flush();
这不复杂:http://symfony.com/doc/current/book/doctrine.html#relationship-mapping-metadata。在symfony1.4中它非常简单。
答案 0 :(得分:2)
您的User
实体有一个方法setState()
,它采用$state
的单个参数。该参数必须是\Frontend\AccountBundle\Entity\States
类型。
在您的控制器中,您通过此调用获取该对象:
$state = $this->getDoctrine()->getRepository('FrontendAccountBundle:States')->find(1);
因此,当您设置用户状态时,您无需为ID烦恼。相反,只需直接设置状态,Doctrine将负责其余部分:
$user->setState($state);
答案 1 :(得分:0)
此解决方案适用于我: https://stackoverflow.com/a/14131067/2400373
但是在Symfony 4中,更改getRepository
的行:
$role = $this->getDoctrine()
->getRepository(Role::class)
->find(1);
$usuario->setRole($role);