Ich habe einen Tagebuch-Service für meine Anwendung eingerichtet. Die Idee war, den Service in meine Controller (obwohl eine Fabrik) zu injizieren und dann die Methode diatryEntry aufzurufen, um Tagebucheinträge in den dB zu speichern. Das Problem, das ich habe, ist, dass ich nur den letzten Eintrag im dB gespeichert bekomme, wenn ich die Methode mehr als einmal in einer Controller-Aktion anrufe. Hier ist DiaryService :: diaryEntry -ZF2 Doctrine Service - Mehrere Anrufe
public function diaryEntry($projectUrn, $msg, $diaryCategory = 14)
{
$em = $this->em;
$user = $this->user;
$ProjectDiary = $this->projectDiaryEntity;
if(is_numeric($projectUrn)) {
$projectUrn = $em->find('Application\Entity\ProjectUrn', $projectUrn);
}
$ProjectDiary->setProjectUrn($projectUrn);
$ProjectDiary->setDiaryCategory($em->find('Application\Entity\DiaryCategory', $diaryCategory));
$ProjectDiary->setStatus(1);
$ProjectDiary->setComment($msg);
$ProjectDiary->setUser($em->getRepository('Application\Entity\Users')->findOneBy(['username' => $user->username]));
$ProjectDiary->setTimestamp(new \DateTime());
$em->persist($ProjectDiary);
$em->flush();
return;
}
In einer Controller-Aktion dann habe ich so etwas wie diese:
$this->diaryService->diaryEntry($order->getProjectUrn(), 'test msg 1);
$this->diaryService->diaryEntry($order->getProjectUrn(), 'test msg 2);
Das Problem nur 2 msg in der dB gespeichert zu werden, msg 1 nicht zu sein Gerettet. Die letzte Aktualisierung bestand darin, den Flush am Ende der diaryEntry-Methode hinzuzufügen, aber das hat keinen Unterschied gemacht. Hat jemand Ideen, wo ich anfangen könnte, dieses Problem zu lösen? Ist es schlechte Architektur und vielleicht nicht als Service geeignet und sollte etwas anderes nutzen?
Ich bin glücklich, alle weiteren Code aus der App erforderlich einzufügen
Sie für jede Hilfe im Voraus Vielen
Hallo SzymonM, ja ich Tagebuch Objekt durch Fabrik am injizierende und was Sie sagen, macht Sinn, und es funktioniert !! Danke freundlicherweise habe ich akzeptiert und abgestimmt. Wir hatten versucht, den Dienst im Controller usw. zu klonen, aber nie im eigentlichen Dienst. – JamesB
** Vorsicht **: PHP nicht tief Klonen standardmäßig tut, Das bedeutet, wenn eine Eigenschaft eines geklonten Entität Punkte an ein anderes Unternehmen oder ein Objekt, wird es nicht geklont werden. Vielleicht möchten Sie prüfen, [diese Antwort] (http://stackoverflow.com/questions/14158111/deep-clone-doctrine-entity-with-related-entities) und [diese Bibliothek] (https://github.com/myclabs/DeepCopy). – edigu