学说:不要加载相关记录

时间:2010-12-09 09:44:58

标签: php orm doctrine

为了提高应用的性能,我想分开查询而不是使用leftJoins。然后我必须创建自己的相关Doctrine_Collection:

$user->Friends->add($current_friend);

但是当我尝试访问相关(未加载)的集合时,我不希望doctrine进行查询。

我怎么能这样做。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为答案在this § about relation handling。建立新的友谊关系并保存,而不是将朋友添加到用户对象。

答案 1 :(得分:0)

然后我发现了这种方式(我应该优化它):

$my_relation_collFriend = FriendTable::getInstance()->findByIdUser($user->id_user);

foreach($my_relation_collFriend as $friend)
{
   $collFriend = $user->get('Friends', false); //get the related collection without db query
   if(!$collFriend ) //unfornatly, It can be null 
   {
     $collFriend = new Doctrine_Collection::create('friend'); //create the collection
     $user->set('Friends', $collFriend, false); // define the related collection without db query
   }
   $collFriend->add($friend); //add the record to related collection
 }

通过这个例子,我知道这是无用的,但有很多连接和数据,这是必要的