Doctrine2:延迟加载失败,我必须重新初始化 class

Doctrine2: Lazy loading fails and I have to re-initialize the class

我有三个实体墙post、相册和照片。

  1. wallpost 与相册有多对一的关系。
  2. 相册与照片是一对多关系。

当我 post 照片挂在墙上时,数据会进入所有三个表。 墙上一张记录post,相册一张,照片多张。

现在,当我使用

获取数据时
$wall_post_obj->getAlbum()->getId()

它显示 id 但是当我尝试获取任何其他信息时

$wall_post_obj->getAlbum()->getName()

它returns NULL。

This happens only when I delete one photo from album.

为了让它工作,我必须使用查找查询重新初始化它。 像这样:$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 ();

代码被循环调用如下:

foreach( ...  )
{
     $wall_post_obj->getAlbum()
}

但是不小心把$em->clear()放在了循环的末尾。

$em->clear() 清除当前对象中的数据。所以 $em->refresh() 将不起作用。