[英]How do I insert user_id with ManyToOne relationship in symfony?
Really new with symfony, coming from yii. 来自yii的symfony真的很新。
I can't insert user_id into another table with a ManyToOne relationship. 我无法将user_id插入到具有ManyToOne关系的另一个表中。 When I get entity of the table that I want to insert of the id, I used:
$en->setUser($user_id);
当我得到要插入id的表的实体时,我使用了:
$en->setUser($user_id);
The outcome is: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null
结果是:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null
but when I do var_dump($user_id);
但是当我做
var_dump($user_id);
there is an id. 有一个身份证。 So how can I insert user_id with a many to one relationship?
那么如何插入user_id与多对一关系?
[update] TableUser Entity [更新] TableUser实体
<?php
namespace User\Bundle\RegisterBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table(name="user", indexes={@ORM\Index(name="user_id", columns={"user_id"})})
* @ORM\Entity
*/
class User
{
/**
* @var integer
*
* @ORM\Column(name="user_id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $userId;
public function getUserId()
{
return $this->userId;
}
}
?>
TableSomeModel Entity that has ManytoOne relationship with user_id TableSomeModel与user_id具有ManytoOne关系的实体
<?php
namespace \Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* SomeModel
*
* @ORM\Table(name="SomeModel", indexes={@ORM\Index(name="user_id", columns={"user_id"})})
* @ORM\Entity
*/
class SomeModel
{
/**
* @var \User
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
* })
*/
private $user;
/**
* Set user
*
* @param \Entity\User $user
* @return App
*/
public function setUser(\Entity\User $user)
{
return $this->user;
}
/**
* Get user
*
* @return \Entity\User
*/
public function getUser()
{
return $this->user;
}
}
In the controller 在控制器中
$en = new SomeModel();
var_dump($user_id); //not null
$en->setUser($user_id); //always null;
$en->setUser($User); // $User is object
要么
$en->setUser($em->getReference('User\Bundle\RegisterBundle\Entity\User', $user_id)); // $user_id is integer, $em is EntityManager
Make sure that you have defined the relation properly. 确保您已正确定义了关系。 If you are using yml configuration files for defining entities, many to one relations are configured as given below.
如果您使用yml配置文件来定义实体,则配置多对一关系,如下所示。
manyToOne:
user:
targetEntity: Your\NameSpace\Entity\User
joinColumn:
name: user_id
referencedColumnName: id
If you are using annotation to define the relation, 如果使用注释来定义关系,
/**
* @ManyToOne(targetEntity="Your\NameSpace\Entity\User")
* @JoinColumn(name="user_id", referencedColumnName="id")
**/
private $user;
And the setUser method in your entity 和实体中的setUser方法
/**
* Set user
*
* @param Blsk\CoreBundle\Entity\User $user
*/
public function setUser(Your\NameSpace\Entity\User $user = null)
{
$this->user = $user;
}
EDIT In your code, setUser
method is not setting the user but returning the user. 编辑在您的代码中,
setUser
方法不是设置用户而是返回用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.