原则刷新错误 -> 实体上的空变量



我在symfony 3上有此错误:

执行插入视频时发生了一个例外(标题, 描述,状态,图像,video_path,create_at,updated_at, user_id(value(?,?,?,?,?,?,,?('with params [titulo del del Video1",Null,Null,Null,Null,Null," 2017-05-06 08:10:16"," 2017-05-06 08:10:16",null]:

SQLSTATE [23000]:完整性约束违规:1048列'user_id' 不能为null

我有很多从$用户数据到var $视频的空数...在帖子末尾查看转储

            $user_id = ($identity->sub != null) ? $identity->sub : null;
            $title = (isset($params->title)) ? $params->title : null;
            $description = (isset($params->description)) ? $params->description : null;
            $status = (isset($params->status)) ? $params->status : null;
            if ($user_id != null && $title != null) {
                $em = $this->getDoctrine()->getManager();
                $user = $em->getRepository("BackendBundle:User")->findOneBy(
                        array(
                            "id" => $user_id
                ));
                $video = new Video();
                $video->setUser($user);
                $video->setTitle($title);
                $video->setDescription($description);
                $video->setStatus($status);
                $video->setCreatedAt($createdAt);
                $video->setUpdatedAt($updatedAt);
                var_dump($video);
                $em->persist($video);
                $em->flush();

$ video的var_dump:

object(BackendBundleEntityVideo)#313 (10) {
  ["id":"BackendBundleEntityVideo":private]=>
  NULL
  ["title":"BackendBundleEntityVideo":private]=>
  string(17) "titulo del video1"
  ["description":"BackendBundleEntityVideo":private]=>
  NULL
  ["status":"BackendBundleEntityVideo":private]=>
  NULL
  ["image":"BackendBundleEntityVideo":private]=>
  NULL
  ["videoPath":"BackendBundleEntityVideo":private]=>
  NULL
  ["createdAt":"BackendBundleEntityVideo":private]=>
  object(DateTime)#281 (3) {
    ["date"]=>
    string(26) "2017-05-06 08:10:16.255330"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(12) "Europe/Paris"
  }
  ["updatedAt":"BackendBundleEntityVideo":private]=>
  object(DateTime)#282 (3) {
    ["date"]=>
    string(26) "2017-05-06 08:10:16.255350"
    ["timezone_type"]=>
    int(3)
    ["timezone"]=>
    string(12) "Europe/Paris"
  }
  ["user":"BackendBundleEntityVideo":private]=>
  object(BackendBundleEntityUser)#317 (8) {
    ["id":"BackendBundleEntityUser":private]=>
    int(8)
    ["role":"BackendBundleEntityUser":private]=>
    string(4) "user"
    ["name":"BackendBundleEntityUser":private]=>
    string(7) "Pruebas"
    ["surname":"BackendBundleEntityUser":private]=>
    string(7) "Pruebas"
    ["email":"BackendBundleEntityUser":private]=>
    string(19) "pruebas@pruebas.com"
    ["password":"BackendBundleEntityUser":private]=>
    string(64) "718e3978516d387924d91980a7e21af2f434de445731951a6585bda2eacef046"
    ["image":"BackendBundleEntityUser":private]=>
    string(14) "1494043934.png"
    ["createdAt":"BackendBundleEntityUser":private]=>
    object(DateTime)#314 (3) {
      ["date"]=>
      string(26) "2017-05-05 10:05:36.000000"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(12) "Europe/Paris"
    }
  }
  ["User":"BackendBundleEntityVideo":private]=>
  NULL
}

查看$视频["用户"]已经满了,为什么我的齐平时为空?有人知道为什么吗?

视频实体setuser方法

  public function setUser(BackendBundleEntityUser $user = null)
  {
    $this->user = $user;
    return $this;
  }

与用户数据库的关系视频

   manyToOne:
    User:
        targetEntity: User
        cascade: {  }
        fetch: LAZY
        mappedBy: null
        inversedBy: null
        joinColumns:
            user_id:
                referencedColumnName: id
        orphanRemoval: false

将字段名称User更改为 user

user: 
   targetEntity: User

整个设置:

manyToOne:
    user:
        targetEntity: User
        cascade: {  }
        fetch: LAZY
        mappedBy: null
        inversedBy: null
        joinColumns:
            user_id:
                referencedColumnName: id
        orphanRemoval: false

您还应该运行命令以检查设置所有关系是否有效:

php bin/console doctrine:schema:validate

您可能需要在AddVideo(视频$ video(下的用户实体中需要{...}添加$ video-> setuser($ this(;。

如您所见,var_dump的最后一行为null。

最新更新