我有三个实体wallpost,专辑和照片。
当我在墙上发布照片时,数据会进入所有三个表格。 在wallpost中有一个记录,一个在专辑中,多个在照片中。
现在我使用
获取数据$wall_post_obj->getAlbum()->getId()
它显示了id,但是当我尝试获取任何其他信息时,例如
$wall_post_obj->getAlbum()->getName()
返回NULL。
仅当我从相册中删除一张照片时才会发生这种情况。
要使其工作,我必须使用查询查询重新初始化它。
像这样:$em->find('\Entities\album',$id);
额外信息:
$ wall_post_obj来自以下查询:
$qb_1 = $em->createQueryBuilder();
$q_1 = $qb_1->select('wp, fromUsr.id,
fromUsr.professional_image,
fromUsr.gender,
fromUsr.firstname,
fromUsr.lastname')
->from( '\Entities\wall_post', 'wp' )
->LeftJoin( 'wp.wall_postsFrom_user', 'fromUsr' )
->where( 'wp.id IN (:selected_wp_ids_r)' )
->setParameter( 'selected_wp_ids_r', $selected_wp_ids_r )
->orderBy( 'wp.last_activity_datetime', 'DESC' );
// wallpost Comments join
$q_1->addSelect( 'wall_comments, comment_user' );
$q_1->LeftJoin( 'wp.wall_postsComment', 'wall_comments' );
$q_1->LeftJoin( 'wall_comments.commentsIlook_user', 'comment_user' );
// wallpost Likes join
$q_1->addSelect( 'likes' );
$q_1->LeftJoin( 'wp.wall_postsLikes', 'likes' );
$q_1->LeftJoin( 'likes.likesLiked_by', 'likedByUser' );
$q_1 = $q_1->getQuery()->getResult ();
答案 0 :(得分:2)
代码在循环中调用如下:
foreach( ... )
{
$wall_post_obj->getAlbum()
}
但是在循环结束时意外地放置了$ em-> clear()。
$ em-> clear()清除当前对象的数据。所以$ em-> refresh()将不起作用。