Fix segment loading for inconsistent segment/newsletter segment relations

[MAILPOET-2729]
This commit is contained in:
Jan Jakeš
2020-03-18 15:07:18 +01:00
committed by Veljko V
parent 770a831d3d
commit c26b967e64
2 changed files with 5 additions and 1 deletions

View File

@ -145,7 +145,7 @@ class NewslettersResponseBuilder {
$output = []; $output = [];
foreach ($newsletter->getNewsletterSegments() as $newsletterSegment) { foreach ($newsletter->getNewsletterSegments() as $newsletterSegment) {
$segment = $newsletterSegment->getSegment(); $segment = $newsletterSegment->getSegment();
if ($segment->getDeletedAt()) { if (!$segment || $segment->getDeletedAt()) {
continue; continue;
} }
$output[] = $this->buildSegment($segment); $output[] = $this->buildSegment($segment);

View File

@ -4,6 +4,7 @@ namespace MailPoet\Entities;
use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait; use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait;
use MailPoet\Doctrine\EntityTraits\CreatedAtTrait; use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
use MailPoet\Doctrine\EntityTraits\SafeToOneAssociationLoadTrait;
use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait; use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
use MailPoetVendor\Doctrine\ORM\Mapping as ORM; use MailPoetVendor\Doctrine\ORM\Mapping as ORM;
@ -15,6 +16,7 @@ class NewsletterSegmentEntity {
use AutoincrementedIdTrait; use AutoincrementedIdTrait;
use CreatedAtTrait; use CreatedAtTrait;
use UpdatedAtTrait; use UpdatedAtTrait;
use SafeToOneAssociationLoadTrait;
/** /**
* @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity", inversedBy="newsletter_segments") * @ORM\ManyToOne(targetEntity="MailPoet\Entities\NewsletterEntity", inversedBy="newsletter_segments")
@ -32,6 +34,7 @@ class NewsletterSegmentEntity {
* @return NewsletterEntity * @return NewsletterEntity
*/ */
public function getNewsletter() { public function getNewsletter() {
$this->safelyLoadToOneAssociation('newsletter');
return $this->newsletter; return $this->newsletter;
} }
@ -43,6 +46,7 @@ class NewsletterSegmentEntity {
* @return SegmentEntity * @return SegmentEntity
*/ */
public function getSegment() { public function getSegment() {
$this->safelyLoadToOneAssociation('segment');
return $this->segment; return $this->segment;
} }