2010-12-09 37 views
0

Afin d'améliorer les performances de l'application, je voudrais séparer les requêtes au lieu d'utiliser leftJoins. Ensuite, je dois créer ma propre Doctrine_Collection connexe:Doctrine: ne pas charger les enregistrements liés

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

Mais je ne veux pas la doctrine effectue une requête lorsque je tente d'accéder à la collection liée (non chargée).

Comment je peux faire cela. Merci d'avance.

Répondre

0

Je pense que la réponse est this § about relation handling. Créez une nouvelle relation d'amitié et enregistrez-la au lieu d'ajouter un ami à un objet utilisateur.

+0

je vois ce que tu veux dire, mais Je ne veux pas enregistrer de nouveaux amis (il existe déjà dans la base de données), je veux recréer le graphique d'objet des utilisateurs et des amis par moi-même avec plusieurs requêtes au lieu d'une seule. – DEY

0

je trouve cette façon (j'optimiser ce):

$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 
} 

Avec cet exemple, je sais que cela ne sert à rien, mais avec beaucoup de jointures et données, il devient nécessaire