学说/和谐——实体之间的冲突.试图建立关系.我得到一个错误


Doctrine/Symfony - Conflicts between entities. Trying to make relations. I get an error

我的实体总是得到一个异常。我试着和他们一起玩。我在谷歌上检查了哪种关系最适合我的实体…但是我找不到最好的配置。

我正在做一个网站,在那里你可以创建一个简单的帖子,在那里你可以创建一些相册。

3实体:相册/邮件/图片

在相册中我有一个图片数组,在Poste中我也有一个图片数组。

一个用户可以拥有多个相册。在专辑实体中,我确实设置了用户来保持引用。

/**
* 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
}

我的post实体与图片数组:

/**
 * Poste
 *
 * @ORM'Table(name="poste")
 * @ORM'Entity(repositoryClass="Moodress'Bundle'PosteBundle'Entity'PosteRepository")
 */
class Poste
{
    /**
     * @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=true)
     */
    private $user;
    /**
     * @var string
     *
     * @ORM'Column(name="description", type="text")
     */
    private $description;
     /**
     * @ORM'OneToMany(targetEntity="Moodress'Bundle'AlbumBundle'Entity'Picture", cascade={"persist"}, mappedBy="poste")
     */
     private $pictures;
     // Getters and setters
}

我的图片实体:

/**
 * Picture
 *
 * @ORM'Table(name="picture")
 * @ORM'Entity(repositoryClass="Moodress'Bundle'AlbumBundle'Entity'PictureRepository")
 */
class Picture
{
    /**
     * @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;
     /**
     * @Assert'File(maxSize="6000000")
     */
    private $file;
    /**
     * @var string
     *
     * @ORM'Column(name="name", type="string", length=255)
     */
    private $name;
    /**
     * @var string
     *
     * @ORM'Column(name="path", type="string", length=255)
     */
    private $path;
    // Getters and setters
}

我有这个错误:Undefined index: album in /Users/Sandro/sites/moodress-website/Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1608.当我序列化任何具有user对象的实体时,直接出现此错误…

日志中:

at ErrorHandler->handle('8', 'Undefined index: album', '/Users/Sandro/sites/moodress-website/Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php', 
'1608', array('assoc' => array('fieldName' => 'pictures', 'mappedBy' => 'album', 
'targetEntity' => 'Moodress'Bundle'AlbumBundle'Entity'Picture', 
'cascade' => array('persist'), 'orphanRemoval' => false, 'fetch' => '2', 
'type' => '4', 'inversedBy' => null, 'isOwningSide' => false, 'sourceEntity' => 'Moodress'Bundle'AlbumBundle'Entity'Album', 'isCascadeRemove' => false, 
'isCascadePersist' => true, 'isCascadeRefresh' => false, 'isCascadeMerge' => false, 
'isCascadeDetach' => false), 'sourceEntity' => object(Album), 'offset' => null, 
'limit' => null, 'criteria' => array())) in /Users/Sandro/sites/moodress-website/Symfony/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1608

我不知道我的实体有什么问题。任何帮助吗?

错误:

'Undefined index: album'

Album类中此注释的结果。

/**
 * @ORM'OneToMany(
 *      targetEntity="Moodress'Bundle'AlbumBundle'Entity'Picture",
 *      cascade={"persist"}, 
 *      mappedBy="album"
 *  )
 */

您已经设置了映射到album,但在您的Picture类中没有$album属性。

将此添加到您的Picture类并清除缓存

/**
 * @ORM'ManyToOne(
 *      targetEntity="Moodress'Bundle'AlbumBundle'Entity'Album",
 *      inversedBy="pictures"
 *  )
 */
protected $album;
相关文章: