2017-08-09 9 views
1

php artisan doctrine:schema:createを実行して、エンティティからスキーマを生成するときにエラーが発生します。Laravel Doctrineスキーマを生成するときにターゲットエンティティ#を見つけることができません

[Doctrine \ ORM \ Mapping \ MappingException] 'App \ Entities \ SongEntity#rank'にターゲットエンティティApp \ Entities \ PopularityEntityが見つかりません。

ここでは、1対多マッピングを実行しようとしています。各歌エンティティは、多くの順位エンティティにマッピングすることができる。ここに2つの実体があります。ランクエンティティ:

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; 
    } 

} 

ソングエンティティ:私はランク付けする@ORMの\カラム(タイプは=「文字列」)を追加した場合

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; 
    } 

} 

はさらに、スキーマが正常に生成されますが、外部キーが生成されません。私が間違っていることは何ですか?

答えて

1

は、私は専門家ではないんだけど、自分のユーザエンティティで:

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

とあなたのクラス クラスRankEntity

なし参照の名前エンティティ

をランク付けします多分この周りの何か?

+0

ありがとう、それはRankEntityでした、その余分な「エド」は2時間を無駄にしました。どのような愚かな間違い – v1shva

+0

それは誰にも起こることができます – ricardo

関連する問題