2014-05-19 3 views
0

항상 엔티티에 예외가 있습니다. 나는 그들과 놀려고했다. Google에서 어떤 관계가 내 요소에 가장 적합한 지 확인했습니다 ... 그러나 최상의 구성을 찾을 수 없었습니다.Doctrine/Symfony - 몇 가지 오류가 있습니다. 내 관계가 잘못되어 있습니다.

일부 앨범을 만들 수있는 웹 사이트를 만들고 있습니다.

사용자는 내가 엔티티 앨범을 가지고 있고 사용자 속성 내부에있는 여러 albums.So을 가질 수 그러나

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

, 사용자가 웹 사이트에 가입하면, 내가 업로드라는 기본 앨범을 만드는 것이 나는 사용자 클래스를 유지하고 싶다.

/** 
* 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.이 오류가 바로 나타납니다 ... 오류가

답변

0

내 오류 : 앨범 클래스에서이 주석에서

'Undefined index: album' 

결과.

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

mappedBy를 앨범으로 설정했지만 my Picture 클래스에는 $ album 속성이 없습니다.

이걸 내 Picture 클래스에 추가하고 캐시를 삭제했습니다.

/** 
* @ORM\ManyToOne(
*  targetEntity="Moodress\Bundle\AlbumBundle\Entity\Album", 
*  inversedBy="pictures" 
* ) 
*/ 
protected $album; 

그것은 내가 여전히 같은 오류가 내 문제

0

입니다

내가 어떻게 뭘하려 User 클래스의 $ albumUpload 속성에 대한 연결 주석으로 인해 발생합니다.

Doctrine은 사용자 엔터티에서 @ORM\OneToOne(targetEntity="Moodress\Bundle\AlbumBundle\Entity\Album") 연관을 사용할 때 앨범 엔터티에 $ album 속성이 있다고 가정합니다.

에서는 사용자 개체에

/** 
* @ORM\OneToMany(targetEntity="Moodress\Bundle\AlbumBundle\Entity\Album", mappedBy="user", cascade={"persist"}) 
*/ 
protected $albums; 

/** 
** @ORM\ManyToOne(targetEntity="Moodress\Bundle\UserBundle\Entity\User", inversedBy="albums") 
** @ORM\JoinColumn(nullable=false) 
*/ 
private $user; 
앨범 기업에 대한

을보십시오. 또한 $this->albums = new ArrayCollection()을 User :: __ construct()에 추가하십시오.

을 추가하려면 사용자의 기본 앨범을으로 유지해야합니다.이 앨범은 비즈니스 로직의 어딘가에서 구현해야합니다. 앨범 컬렉션에서 기본 앨범을 식별하고 특히이 항목의 삭제를 방지하는 방법을 찾아 낼 수 있습니다.

희망이 도움이됩니다.

+0

안녕, 해결 : 나는 사용자 개체와 오류를 가진 개체를 직렬화 사이의 상관 관계를 찾을 수 없습니다/ – manonthemoon

+0

을 ... 당신이 게시하시기 바랍니다 수 이 컨텍스트에서 사용중인 엔티티와 오류를 발생시키는 코드? serialize()를 사용할 때 BasicEntityPersister가 트리거되지 않아야합니다. – SecretUsername

관련 문제