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;
}
}
はさらに、スキーマが正常に生成されますが、外部キーが生成されません。私が間違っていることは何ですか?
ありがとう、それはRankEntityでした、その余分な「エド」は2時間を無駄にしました。どのような愚かな間違い – v1shva
それは誰にも起こることができます – ricardo