Das Kopieren von Datensätzen ist im Doctrine\Manager\CopyManager geregelt. Es stehen unterschiedliche Methoden zur Verfügung, um das Kopieren zu ermöglichen (siehe nachfolgende Überschicht).
Info |
---|
|
Alle Methoden erlauben das Kopieren vieler Datensätze in einem Aufruf. |
Methode | Beschreibung |
---|
root | Es wird der Stammdatensatz kopiert. Sprachen werden nicht kopiert. |
default | Es wird der Stammdatensatz mit Sprachen kopiert. |
withRelation | Wie default , der Stammdatensatz wird aber zusätzlich zu Eltern- und Kindern verknüpft, zu denen der Ursprungsdatensatz auch verknüpft ist. |
recursive | Wie default , jedoch werden hier alle Kinder und Kindeskinder ebenfalls kopiert. Es wird die vollständige Rekursionskette kopiert. |
...
Codeblock |
---|
|
use Brandbox\Framework\Brandbox\Doctrine;
$ids = [1,2,3,4,5];
$entities = [$repository => $ids]
$logger = $this
->staticController(Doctrine\Manager\CopyManager::class)
->root($entities)
;
$logger = $this
->staticController(Doctrine\Manager\CopyManager::class)
->default($entities)
;
$logger = $this
->staticController(Doctrine\Manager\CopyManager::class)
->withRelation($entities)
;
$logger = $this
->staticController(Doctrine\Manager\CopyManager::class)
->recursive($entities)
; |
Verwendung des Loggers
Die Kopiervorgänge werden intern geloggt. Nach dem Kopiervorgang kann auf die Nachrichten sowie die kopierten Ids zugegriffen werden.
Codeblock |
---|
|
use Brandbox\Framework\Brandbox\Doctrine;
$copyManager = $this->staticController(Doctrine\Manager\CopyManager::class);
$logger = $copyManager->root($entities);
$copiedId = $copyManager->getCopiedId($logger, $repository, $sourceId);
$messages = $logger->all(); |