没有为实体,ORM Doctrine指定标识符/主键

时间:2018-02-21 14:48:11

标签: php orm doctrine

我尝试做的是在一个文件中有两个用户类,在另一个文件中有两个用户视频。我的任务是做数据库,用户必须登录,之后他可以上传视频。该视频具有实体$ uploaded_by,并且应该从User类获取$ id。

User.php:

<?php
// src/User.php
namespace Db;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;


/**
 * @ORM\Entity @ORM\Table(name="user")
 **/
class User
{
/**@ORM\Id @ORM\Column(type="integer") **/
protected $id;

/** @ORM\Column(type="string") **/
protected $name;

/** @ORM\Column(type="datetime") **/
protected $created_at;

/** @ORM\Column(type="datetime", nullable=true) **/
protected $last_login;

Video.php:

<?php
// src/Video.php
namespace Db;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;


/**
 * @ORM\Entity @ORM\Table(name="video")
 **/
class Video
{
/** @ORM\Id @ORM\Column(type="integer") @ORM\GeneratedValue **/
protected $id;

/** @ORM\Column(type="string") **/
protected $name;

/** @ORM\Column(type="datetime") **/
protected $created_at;

/**
 * @OneToOne(targetEntity="User")
 * @JoinColumn(name="user_id", referencedColumnName="id")
 * @ORM\Column(type="integer") **/
protected $uploaded_by;

/** @ORM\Column(type="integer", nullable=true) **/
protected $deleted;

当我尝试使用

更新Doctrine中的ORM模式时
$ vendor/bin/doctrine orm:schema-tool:update --force --dump-sql

结果是:

In MappingException.php line 52:

No identifier/primary key specified for Entity "Db\User". Every Entity 
must  
have an identifier/primary key.    
  1. 我做错了什么?
  2. 如果我的课程连接有问题,我该如何解决?

1 个答案:

答案 0 :(得分:2)

尝试改变这个:

/**@ORM\Id @ORM\Column(type="integer") **/
protected $id;

到此:

/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
protected $id;