2017-08-09 46 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

相關問題