【问题标题】:No identifier/primary key specified for Entity, ORM Doctrine没有为实体指定标识符/主键,ORM 原则
【发布时间】:2018-02-21 14:48:11
【问题描述】:

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

用户.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;

视频.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. 如果我的课程连接有问题,我该如何解决?

【问题讨论】:

    标签: php orm doctrine


    【解决方案1】:

    尝试改变这一点:

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

    到这里:

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

    【讨论】:

    • 在 AnnotationException.php 第 54 行:[语义错误] 属性 Db\Video::$upload ed_by 中的注释“@OneToOne”从未导入。您是否可能忘记为此注释添加“使用”语句?
    • 你需要把@OneToOne改成@ORM\OneToOne
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2015-07-25
    • 2016-01-31
    相关资源
    最近更新 更多