![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 3.09.2015 Ostrzeżenie: (0%) ![]() ![]() |
Sorry Panowie że zawracam głowę ale jestem za "mały" żeby temu dac radę tak jak chcę.
Załózmy, że mam tablicę KARTOTEKA o strukturze np.: id, created, modified, numer, imię, nazwisko, .... (do 30 pól) Muszę przygotowywać roczne archiwa tej tablicy (o nazwach [rok]_KARTOTEKA) przenosząc część rekordów z tablicy podstawowej. Chcę to zrobić następująco: 1) sprawdzić czy tablica archiwum istnieje (np. 2015_KARTOTEKA) 2) jeśli nie istnieje to ja założyć 3) skopiować rekord z tablicy KARTOTEKA do tablicy archiwum (np. 2015_KARTOTEKA) 4) usunąć ten rekord z tablicy KARTOTEKA Ale chciałbym to zrobić nie powielając Entity tablicy KARTOTEKA. Chciałbym użyć tej samej klasy. Pierwszy krok zrobiłem tak: Kod $manager = $this->getDoctrine()->getManager(); $metadata = $manager->getClassMetadata(KARTOTEKA::class); $metadata->setPrimaryTable(array('name' => ‘2015_KARTOTEKA’)); $schema = new SchemaTool($manager); $schema->createSchema(array($metadata)); i archiwum jest towrzony gdy takiej tablicy nie ma w bazie danych - fajnie. Problem mam z krokami 3 i 4 bo nie potrafię znaleźć poprawnej drogi rozwiązania tego zadania. Próbowałem tak: Kod $data = $this->getRepo('KARTOTEKA')->findOneBy(1); $second = clone $data; $second->setId(null); $second->save(); oraz tak: Kod $second = new Second(); $second->fromArray($data->toArray()); $second->save(); I ciągle nie wiem gdzie i jak znaleźć "uchwyt" do obiektu archiwum (np. 2015_KARTOTEKA). I żebym nie był źle zrozumiany, jak zrobić to otwartym kodem SQLa (DQL) to ja wiem. Ja chcę to zrobić jak najbardziej Doctri-nersko. Proszę o pomoc i sugestie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 04:21 |