簡體   English   中英

主義/交響曲-我有一些錯誤。 我的關系出了點問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM