Есть ли способ передать объекты из каждого цикла в сообщение swiftmailer? - PullRequest
0 голосов
/ 28 марта 2019

Я перебираю базу данных и запрашиваю массив объектов, однако, когда я пытаюсь передать эти объекты из цикла в swiftmail, я получаю только последний. Чего мне не хватает?

Я пытался по-разному перемещать почтовый объект внутри цикла, но он отправляет два электронных письма, которые мне не нужны. Мне нужно каким-то образом сохранить все объекты в массив, а затем вызвать их в swiftmailer.

$qb = $repository->createQueryBuilder('i');
$qb->select('j.fund_code', 'j.amount', 'i.source_code', 'i.keyword', 'i.created_at', 'i.status', 'g.transaction_id')
        ->join('i.gateway_response', 'g')
        ->join('i.items', 'j')
        ->Where("i.status = :status")
        ->andWhere($qb->expr()->between('i.created_at', ':starts_at', ':ends_at'))
        ->setParameter('status', 2)
        ->setParameter('starts_at', $startsAt, \Doctrine\DBAL\Types\Type::DATETIME)
        ->setParameter('ends_at', $endsAt, \Doctrine\DBAL\Types\Type::DATETIME);

$query = $qb->getQuery();
$results = $query->getResult();
$resultCount = count($results);


if($resultCount > 0) {
    foreach($results as $holdTran) {
        $status = $holdTran['status'];
        $fundCode = $holdTran['fund_code'];
        $amount = $holdTran['amount'];
        $invoiceNumber = $holdTran['transaction_id'];
        $sourceCode = $holdTran['source_code'];
        $createdOn = $holdTran['created_at']->format('m/d/y');

    //if i vardump here, it prints all the results 

    }

    $output->writeln($resultCount . ': Transactions on Hold');

    $mailer = $this->getContainer()->get('mailer');
    $message = new \Swift_Message();
    $message->setSubject('Daily Giving Report')
            ->setFrom('chris2kus31@gmail.com')
            ->setTo('cmoreno@kcm.org')
            ->setContentType("text/html")
            ->setBody($this->getContainer()
            ->get('templating')
            ->render('@Giving/Default/givingReport.html.twig',
                [
                    'resultCount' => $resultCount, //only prints the last result
                    'status'=> $status,  //only prints the last result
                    'fundCode'=>$fundCode,  //only prints the last result
                    'amount'=>$amount,  //only prints the last result
                    'invoiceNumber'=>$invoiceNumber,//only prints the last result
                    'createdAt'=>$createdOn,  //only prints the last result
                    'sourceCode'=>$sourceCode  //only prints the last result
                ])

            );
    $mailer->send($message);

Что я хотел бы сделать, так это уметь зацикливаться, получать ВСЕ объекты и передавать их в Swiftmailer. Затем я хотел бы использовать веточку для зацикливания и печати всех результатов. Такие как ниже, но со всеми результатами.

<p>Transaction {{invoice}}</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...