2017-01-02 4 views
0

Хорошо, я пытаюсь сделать запись и отправить уведомление по электронной почте/подтверждение того, что запись была записана. У меня много отношений между моделью игроков и моделью Lessonhours. Модель User имеет один-много с моделью Players. Я запустил свой метод «store» с несколькими различными модификациями, и, наконец, я получил свою электронную почту для отправки. Проблема в том, что я не могу получить массив игроков, которые существуют, и отправлять каждое электронное письмо. Множественные варианты из моей формы правильно вставлены в соответствующие таблицы. Когда дело доходит до сбора данных электронной почты, я пришел ближе всего к следующему коду. Проблема с ЭТО заключается в том, что я получаю только одного игрока вместо двух или более, когда они существуют. Я надеюсь в этом есть смысл. Скриншоты ниже.Устранение неполадок всех параметров

код и скриншот $ запроса массива: Code and dd() for $request object.

The dd($request->players)

After query, not capturing the array of players.

Not capturing array of players dd($players)

Code to add an index to the $request object

Error message after trying to add index.

Игроки Модель: Players Model

Я не очень опытный с этим, и я нахожу, что трудно определить, какие документы пример использования. Как я могу получить все адреса электронной почты для отправки после вставки записи? Я ценю всю предлагаемую помощь.

Lessonhours Модель: Lessonhours Model

магазин Lessonhours форма Lessonhours form

пользователя Модель enter image description here

+0

Правильно ли я говорю, что пользователь не может отправить запрос, если массив игроков пуст? –

ответ

0

Я не уверен, почему вы кладете массив внутри массива для whereIn пункта, но если запрос игроков уже проходит через массив, тогда вы должны просто иметь возможность:

whereIn('id', $request->players) 

Далее вы отправляете только одно электронное письмо, потому что вы возвращаетесь из цикла, поэтому он отправит первому игроку одно сообщение, а затем вернет ответ. Чтобы сохранить иметь временную переменную, вы снова не используете вы можете сделать:

Players::with('users')->whereIn('id', $request->players)->get() 
    ->each(function ($player) use ($lesshours) { 
     Mail::to($player->users)->send(new ThankYouForLessonPackagePurchase($lesshours)); 
    }); 

return back()->with(['success' => 'Player is enrolled in new Lesson Package.']); 

Вы не должны делать выше, это просто еще один способ, чтобы написать ее.

Наконец, если вы всегда будете требовать игрок идентификаторов для отправки, то вы можете также добавить его в массив проверки:

'players => 'required', 
'players.*' => 'exists:players,id', 

Надеются, что это помогает!

+0

Да, спасибо за этот замечательный урок в деталях. Я никогда не замечал, что останавливал процесс в предыдущем коде. Спасибо за отзыв о проверке.Письма отправляются одному или нескольким получателям очень гладко. – wdarnellg

Смежные вопросы