我有两个实体Video
和Comment
。
一个视频可以有很多评论(OneToMany)。
实体/ Video.php
class Video
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="integer")
* @ORM\OneToMany(targetEntity="Comment")
* @ORM\JoinColumn(name="id", referencedColumnName="videoId")
*/
private $comments;
/**
* Set comments
*
* @param integer $comments
* @return comments
*/
public function setComments($comments)
{
$this->comments = $comments;
return $this;
}
/**
* Get comments
*
* @return integer
*/
public function getComments()
{
return $this->comments;
}
}
实体/ Comment.php
class Comment
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="integer")
* @ORM\ManyToOne(targetEntity="Video")
* @ORM\JoinColumn(name="videoId", referencedColumnName="id")
*/
private $videoId;
/**
* @ORM\Column(type="text")
*/
private $comment;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set videoId
*
* @param integer $videoId
* @return Comment
*/
public function setVideoId($videoId)
{
$this->videoId = $videoId;
return $this;
}
/**
* Get videoId
*
* @return integer
*/
public function getVideoId()
{
return $this->getVideo($this->videoId);
}
/**
* Set comment
*
* @param string $comment
* @return Comment
*/
public function setComment($comment)
{
$this->comment = $comment;
return $this;
}
/**
* Get comment
*
* @return string
*/
public function getComment()
{
return $this->comment;
}
}
VideoEntity:id PK
CommentEntity:videoId FK
我在控制器中调用视频,如:
$repository = $this->getDoctrine()->getRepository('AppBundle:Video');
$video = $repository->findBy(array('id' => 1));
在此次通话后,我有一个填充的视频实体。
但video.comments
实体未填充comment
。
它只有一个整数。
是否可以在video.comments
实体内填充comment
video
实体(video.id == comment.videoId)?
示例:
array
-- video entity
---- id
---- comments
------ array
-------- comment entity
---------- comment
-------- comment entity
---------- comment
-------- comment entity
---------- comment
我很感激最佳实践。
感谢。
答案 0 :(得分:0)
我相信你想EAGER
load这些评论:
/**
* @ORM\Column(type="integer")
* @ORM\OneToMany(targetEntity="Comment",fetch="EAGER")
* @ORM\JoinColumn(name="id", referencedColumnName="videoId")
*/
private $comments;
答案 1 :(得分:0)
实体/ Video.php
Error
实体/ Comment.php
/**
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Comment", mappedBy="videoId")
* @ORM\JoinColumn(name="id", referencedColumnName="video_id")
*/
private $comments;