[英]Doctrine/Symfony - I have some errors. Something wrong with my relations
我的實體總是例外。 我試圖和他們一起玩。 我在Google上檢查了哪種關系最適合我的實體...但是我找不到最佳的配置。
我正在建立一個網站,您可以在其中創建一些相冊。
一個用戶可以有多個相冊,所以我有一個實體相冊,並且在user屬性里面:
/**
* Album
*
* @ORM\Table(name="album")
* @ORM\Entity(repositoryClass="Moodress\Bundle\AlbumBundle\Entity\AlbumRepository")
*/
class Album
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
** @ORM\ManyToOne(targetEntity="Moodress\Bundle\UserBundle\Entity\User")
** @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var \DateTime
*
* @ORM\Column(name="creationDate", type="datetime")
*/
private $creationDate;
/**
* @var \DateTime
*
* @ORM\Column(name="modificationDate", type="datetime")
*/
private $modificationDate;
/**
* @ORM\OneToMany(targetEntity="Moodress\Bundle\AlbumBundle\Entity\Picture", cascade={"persist"}, mappedBy="album")
*/
private $pictures;
/**
* Constructor
*/
public function __construct()
{
$this->creationDate = new \Datetime();
$this->modificationDate = new \Datetime();
}
// Get and set
}
但是,當用戶在網站上訂閱時,我會創建一個默認的相冊,名為Upload,我想保留在用戶類別中。
這是我試圖做的:
/**
* User
*
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToOne(targetEntity="Moodress\Bundle\AlbumBundle\Entity\Album", cascade={"persist"})
*/
protected $albumUpload;
// Get and set
}
我有此錯誤: Undefined index: album in /Users/Sandro/sites/moodress-website/Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1608.
當我序列化時直接出現此錯誤具有用戶對象的任何實體...
該錯誤是由User類中$ albumUpload屬性的關聯注釋引起的。
當您在用戶實體中使用@ORM\\OneToOne(targetEntity="Moodress\\Bundle\\AlbumBundle\\Entity\\Album")
關聯時,Doctrine假設您的相冊實體中具有$ album屬性。
嘗試
/**
** @ORM\ManyToOne(targetEntity="Moodress\Bundle\UserBundle\Entity\User", inversedBy="albums")
** @ORM\JoinColumn(nullable=false)
*/
private $user;
在您的相冊實體中,以及
/**
* @ORM\OneToMany(targetEntity="Moodress\Bundle\AlbumBundle\Entity\Album", mappedBy="user", cascade={"persist"})
*/
protected $albums;
在您的用戶實體中。 另外,請將$this->albums = new ArrayCollection()
到User :: __ construct()。
現在,如果要為用戶添加並保留默認相冊,則應在業務邏輯中的某個位置實現此相冊。 您可以找出一種方法來識別相冊集合中的默認相冊,並防止刪除該相冊,尤其是對於此項目。
希望這可以幫助。
我的錯誤:
'Undefined index: album'
此結果來自Album類中的注釋。
/**
* @ORM\OneToMany(
* targetEntity="Moodress\Bundle\AlbumBundle\Entity\Picture",
* cascade={"persist"},
* mappedBy="album"
* )
*/
我已經將mapledBy設置為相冊,但是我的Picture類中沒有$ album屬性。
我確實將此添加到了我的圖片類並清除了我的緩存。
/**
* @ORM\ManyToOne(
* targetEntity="Moodress\Bundle\AlbumBundle\Entity\Album",
* inversedBy="pictures"
* )
*/
protected $album;
它解決了我的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.