Ich habe PHP-Arbeiter, die alle 60 Sekunden ausgeführt wird. Der Arbeiter geht durch Artikel und veröffentlicht sie.Lehre 2 - (manchmal) duplizieren verbundene Unternehmen auf flush
Ich habe Repository:
public function findAllUnpublished()
{
$query = $this->entityManager->createQuery('SELECT i FROM Extra\Item\Item i
WHERE i.status = :status')
->setParameter('status', ItemStatusEnum::UNPUBLISHED);
return $query->getResult();
}
und Fassade
public function publishUnpublished()
{
$items = $this->cliRepository->findAllUnpublished();
foreach ($items as $item) {
$item->setPublish(TRUE);
$this->entityManager->persist($item);
}
$this->entityManager->flush();
$this->itemChangedObserver->notifyBatchPublished($items); // this clear cache on web server
return $items;
}
und der Arbeiter, wo die Fassade (jede wiederum nicht)
public function execute()
{
$this->logger->logMessage(ILogger::DEBUG, 'Start publising');
$items = $this->itemFacade->publishUnpublished();
$itemsIds = array_map(function ($item) {
return $item->getId();
}, $items);
$this->logger->logMessage(
ILogger::DEBUG,
'Published %d items (%s)',
count($items),
implode(', ', $itemsIds)
);
$this->logger->logMessage(ILogger::DEBUG, 'End publising');
return IJob::OK;
}
Problem ist, dass manchmal die Arbeiter aufgerufen Dupliziere verwandte Bilder in der Galerie.
Artikel:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @OneToMany(targetEntity="gallery", mappedBy="article", cascade={"persist", "remove"})
* @OrderBy({"position" = "ASC"})
*
*/
private $gallery;
Galerie:
/**
* @var \Article
*
* @ManyToOne(targetEntity="Article", inversedBy="gallery")
*/
private $article;
Hat es jemals mit jemandem passiert?
Nein, ich entfernt haben die bestehen bleiben und Problem gelöst ist nicht. Es sollte nicht von Bedeutung sein, ob Sie auf bereits existierende Entitäten fortfahren. Es ruft nur Hörer und nichts mehr. – MakoBuk
Bitte schauen Sie sich meine Bearbeitung an. – chalasr