Я перебираю базу данных и запрашиваю массив объектов, однако, когда я пытаюсь передать эти объекты из цикла в 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>