Optimizes DB query and result processing code

This commit is contained in:
Vlad
2017-02-15 10:02:13 -05:00
parent 440b7e4e6c
commit e7698b0131
3 changed files with 5 additions and 8 deletions

View File

@ -73,8 +73,7 @@ class SendingQueue extends APIEndpoint {
return $segment['id']; return $segment['id'];
}, $segments); }, $segments);
$subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray(); $subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray();
$subscribers = Helpers::arrayColumn($subscribers, 'id'); $subscribers = Helpers::flattenArray($subscribers);
$subscribers = array_unique($subscribers);
if(!count($subscribers)) { if(!count($subscribers)) {
return $this->errorResponse(array( return $this->errorResponse(array(
APIError::UNKNOWN => __('There are no subscribers in that list!', 'mailpoet') APIError::UNKNOWN => __('There are no subscribers in that list!', 'mailpoet')

View File

@ -77,8 +77,7 @@ class Scheduler {
// ensure that subscribers are in segments // ensure that subscribers are in segments
$subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray(); $subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray();
$subscribers = Helpers::arrayColumn($subscribers, 'id'); $subscribers = Helpers::flattenArray($subscribers);
$subscribers = array_unique($subscribers);
if(empty($subscribers)) { if(empty($subscribers)) {
return $this->deleteQueueOrUpdateNextRunDate($queue, $newsletter); return $this->deleteQueueOrUpdateNextRunDate($queue, $newsletter);
@ -107,9 +106,7 @@ class Scheduler {
return $segment['id']; return $segment['id'];
}, $segments); }, $segments);
$subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray(); $subscribers = Subscriber::getSubscribedInSegments($segment_ids)->findArray();
$subscribers = Helpers::arrayColumn($subscribers, 'id'); $subscribers = Helpers::flattenArray($subscribers);
$subscribers = array_unique($subscribers);
// update current queue // update current queue
$queue->subscribers = serialize( $queue->subscribers = serialize(
array( array(

View File

@ -450,7 +450,8 @@ class Subscriber extends Model {
) )
->select('subscribers.id') ->select('subscribers.id')
->whereNull('subscribers.deleted_at') ->whereNull('subscribers.deleted_at')
->where('subscribers.status', 'subscribed'); ->where('subscribers.status', 'subscribed')
->distinct();
return $subscribers; return $subscribers;
} }