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

时间:2015-05-07 09:36:34

标签: php zend-framework doctrine-orm

我有三个实体wallpost,专辑和照片。

  1. wallpost与专辑有多对一的关系。
  2. 相册与照片有一对多的关系。
  3. 当我在墙上发布照片时,数据会进入所有三个表格。 在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 ();
    

1 个答案:

答案 0 :(得分:2)

代码在循环中调用如下:

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

但是在循环结束时意外地放置了$ em-> clear()。

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