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 \列(類型=「字符串」)排名,模式將被成功生成,但不會產生外鍵。我做錯了什麼?
謝謝你,RankEntity,額外'ed'浪費了兩個小時。多麼愚蠢的錯誤 – v1shva
它可能發生在每個人身上 – ricardo