2017-08-09 55 views
1

当我尝试运行php artisan doctrine:schema:create以从发生错误时生成实体模式。Laravel Doctrine在生成模式时无法找到目标实体#

[Doctrine \ ORM \ Mapping \ MappingException]无法在App \ Entities \ SongEntity#rank中找到目标实体App \ Entities \ Ranking。

我想在这里做一对多的映射。每个歌曲实体可以映射到许多排名实体。这是两个实体。排名实体:

namespace App\Entities; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="ranks") 
*/ 

class RankEntity 
{ 
    /** 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="SongEntity", inversedBy="rank") 
    * @ORM\JoinColumn(name="rankedSong", referencedColumnName="id") 
    */ 
    private $rankedSong; 


    /** 
    * @ORM\Id 
    * @ORM\ManyToOne(targetEntity="UserEntity") 
    */ 
    private $rankedUser; 

    /** 
    * @ORM\Column(type="float") 
    */ 
    private $value; 


    public function __construct($song, $user, $rank) 
    { 
     $this->rankedSong = $song; 
     $this->rankedUser = $user; 
     $this->value = $rank; 
    } 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function getRankedSong() 
    { 
     return $this->rankedSong; 
    } 

    public function getRankedUser() 
    { 
     return $this->rankedUser; 
    } 

    public function getValue(){ 
     return $this->value; 
    } 

    public function setRankedSong($rankedSong) 
    { 
     $this->rankedSong = $rankedSong; 
    } 

    public function setRankedUser($rankedUser) 
    { 
     $this->rankedUser = $rankedUser; 
    } 

    public function setValue($newValue){ 
     $this->value = $newValue; 
    } 

} 

宋实体:

namespace App\Entities; 

use Doctrine\ORM\Mapping as ORM; 
use App\Entities\RankEntity; 
use Doctrine\Common\Collections\ArrayCollection; 
/** 
* @ORM\Entity 
* @ORM\Table(name="songs") 
*/ 
class SongEntity 
{ 
    /** 
    * @ORM\Id 
    * @ORM\GeneratedValue 
    * @ORM\Column(type="integer") 

    */ 
    private $id; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    private $title; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    private $artist; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    private $url; 



    /** 
    * @ORM\ManyToOne(targetEntity="UserEntity") 
    */ 
    private $uploadedUser; 

    /** 
    * @ORM\OneToMany(targetEntity="RankedEntity", mappedBy="rankedSong") 
    * @ORM\JoinColumn(name="id", referencedColumnName="rankedSong") 
    */ 
    private $rank; 

    public function __construct($title, $artist, $url, $userID) 
    { 
     $this->rank = new ArrayCollection(); 
     $this->title = $title; 
     $this->artist = $artist; 
     $this->url = $url; 
     $this->uploadedUser = $userID; 
    } 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function getTitle() 
    { 
     return $this->title; 
    } 

    public function getArtist() 
    { 
     return $this->artist; 
    } 

    public function getUrl() 
    { 
     return $this->url; 
    } 

    public function getUploadedUser() 
    { 
     return $this->uploadedUser; 
    } 

    public function setTitle($title) 
    { 
     $this->title = $title; 
    } 

    public function setArtist($artist) 
    { 
     $this->artist = $artist; 
    } 

    public function setUrl($url) 
    { 
     $this->url = $url; 

    } 
    public function setUploadedUser($user) 
    { 
     $this->uploadedUser = $user; 

    } 

    public function getRank(){ 
     return $this->rank; 
    } 
    public function setRank($rank){ 
     $this->rank = $rank; 
    } 

} 

而且如果我添加@ORM \列(类型=“字符串”)排名,模式将被成功生成,但不会产生外键。我做错了什么?

回答

1

我不是专家,但在你的用户实体:

/** 
     * @ORM\OneToMany(targetEntity="**RankedEntity**", mappedBy="rankedSong") 
     * @ORM\JoinColumn(name="id", referencedColumnName="rankedSong") 
     */ 
      private $rank; 

和类 类RankEntity

,并没有参考的名字排名实体

也许有关于此的东西?

+0

谢谢你,RankEntity,额外'ed'浪费了两个小时。多么愚蠢的错误 – v1shva

+0

它可能发生在每个人身上 – ricardo

相关问题