【问题标题】:Trouble capturing all parameters [closed]无法捕获所有参数[关闭]
【发布时间】:2017-05-16 06:10:52
【问题描述】:

好的,我正在尝试记录并发送电子邮件通知/确认记录已记录。我在 Players 模型和 Lessonhours 模型之间有多对多的关系。 User 模型与 Players 模型是一对多的。 我已经运行了我的“商店”方法,并进行了几次不同的修改,最后我收到了要发送的电子邮件。问题是我无法获取现有的玩家数组并向每个玩家发送电子邮件。我的表单中的多项选择已正确插入各自的表格中。在收集电子邮件数据时,我最接近以下代码。 THIS 的问题在于,当他们存在时,我只能获得一名球员,而不是两名或更多球员。我希望这是有道理的。截图如下。

$request 数组的代码和截图:

球员模型:

我对此不是很有经验,而且我发现很难确定要使用哪个文档示例。插入记录后如何获取所有要发送的电子邮件地址?感谢您提供的所有帮助。

课时模型:

存储课时表格

用户模型

【问题讨论】:

  • 如果玩家数组为空,用户不应该能够提交请求,我说得对吗?

标签: arrays laravel-5.3 laravel-eloquent


【解决方案1】:

我不确定您为什么要将数组放入 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.']);

你不必做上面的它只是另一种写法。

最后,如果您总是要求发送玩家 ID,那么您不妨将其添加到验证数组中:

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

希望这会有所帮助!

【讨论】:

  • 是的,感谢您详细的精彩课程。我从来没有注意到我在前面的代码中停止了这个过程。也感谢有关验证的提示。电子邮件非常顺利地发送给单个或多个收件人。
猜你喜欢
  • 2018-08-22
  • 2018-12-18
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2018-09-21
  • 2023-03-16
  • 2019-12-31
相关资源
最近更新 更多