Doctrine2:延迟加载失败,我必须重新初始化 class
Doctrine2: Lazy loading fails and I have to re-initialize the class
我有三个实体墙post、相册和照片。
- wallpost 与相册有多对一的关系。
- 相册与照片是一对多关系。
当我 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() 将不起作用。
我有三个实体墙post、相册和照片。
- wallpost 与相册有多对一的关系。
- 相册与照片是一对多关系。
当我 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() 将不起作用。