我有三个实体wallpost,专辑和照片。
- WallPost与专辑有许多与专辑的关系。
- 专辑与照片有一对一的关系。
当我在墙上发布照片时,数据将进入所有三个表。WallPost中的一张唱片,一张专辑中的一张和照片中的多个记录。
现在,当我使用
获取数据时$wall_post_obj->getAlbum()->getId()
它显示ID,但是当我尝试获取其他任何信息时,例如
$wall_post_obj->getAlbum()->getName()
它返回null。
这仅在我从专辑中删除一张照片时才发生。
要使它起作用,我必须使用查询查询重新定位。这样:$em->find('Entitiesalbum',$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( 'Entitieswall_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 ();
循环中调用代码:
foreach( ... )
{
$wall_post_obj->getAlbum()
}
,但偶然地将$ em-> clear()放置在循环末端。
$ em-> clear()清除当前对象的数据。因此,$ em-> refresh()将不起作用。