Autor Wątek: Aktualizacja entity? Jak powinna przebiegac?  (Przeczytany 83 razy)

poniat

  • Newbie
  • *
  • Wiadomości: 4
    • Zobacz profil
Aktualizacja entity? Jak powinna przebiegac?
« dnia: Maj 14, 2018, 12:10:24 »
Witam,

Pracuje nad importem klientow i ich zamowien w ORO CRM. Po kazdym zakonczonym imporcie musze zaaktualizowac date ostatniego importu. I tutaj mam mega problem, prosta sprawa. Aktualizauj enity oraz zapisz ja do bazy danych, ale to nie dziala tj powinno.


Teraz uzywam takiego kodu:
Kod: (php) [Zaznacz]
protected function processSyncDate(Transport $transport)
{
    $timeZone = $this->localeSettings->getTimeZone();

    $now = new \DateTime('now');
    $now->setTimezone(new \DateTimeZone($timeZone));

    $lastSyncDate = clone $transport->getLastSyncDate();
    $lastSyncDate->setTimezone(new \DateTimeZone($timeZone));
    $lastSyncDate->modify(sprintf('+%d minute', $transport->getImportInterval()));

    $transport->setLastSyncDate($lastSyncDate);
   
    if ($lastSyncDate < $now) {
        $transportManager = $this->doctrine->getEntityManager(RestTransport::class);

        $uow = $transportManager->getUnitOfWork();
        $meta = $transportManager->getClassMetadata(get_class($transport));
        $uow->recomputeSingleEntityChangeSet($meta, $transport);
    }
}

Wczesniej uzywalem ->persist() oraz ->flush() method ale te metody nie aktualizowali daty, jezeli import jest pust. Znowuz powyzszy kod robi to zawsze. Nawet dodalem warunek php i to go omija. Zapisuje date zawsze, nawet jak jej nie chce aktualizowac. Nie kumam kompletnie jak dziala te symfony w tym przypadku.
« Ostatnia zmiana: Maj 15, 2018, 09:51:21 wysłana przez poniat »

Valantir

  • Hero Member
  • *****
  • Wiadomości: 570
    • Zobacz profil
Odp: Aktualizacja entity? Jak powinna przebiegac?
« Odpowiedź #1 dnia: Maj 15, 2018, 16:52:24 »
Co znaczy "import jest pusty"? A czemu niby persist i flush nie działał? A sprawdzałeś, czy przypadkiem któraś z tych metod nie rzucała Ci wyjątku? persist i flush muszą zadziałać jeśli wszystko robisz dobrze.