2010-12-09 9 views
0

Um die Leistung der App zu verbessern, möchte ich Abfragen trennen, anstatt leftJoins verwenden. Dann muss ich meine eigene ähnliche Doctrine_Collection erstellen:Doktrin: Verwandte Datensätze nicht laden

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

Aber ich will nicht, Lehre eine Abfrage macht, wenn ich versuche, im Zusammenhang mit Zugriff auf Collection (nicht geladen).

Wie kann ich das tun. Vielen Dank im Voraus.

Antwort

0

Ich denke, die Antwort ist in this § about relation handling. Erstellen Sie eine neue Freundschaftsbeziehung und speichern Sie sie, anstatt einem Benutzerobjekt einen Freund hinzuzufügen.

+0

Ich sehe, was Sie meinen, aber Ich möchte keine neuen Freunde speichern (es existiert bereits in der Datenbank), ich möchte das Objektdiagramm von Benutzern und Freunden von mir selbst mit mehreren Abfragen statt nur einer neu erstellen. – DEY

0

dann fand ich diese Art und Weise (ich sollte diese optimieren):

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

Mit diesem Beispiel, das ich weiß, das ist nutzlos, aber mit viel verbindet und Daten es notwendig wird,

Verwandte Themen