2017-01-02 2 views
0

私はレコードを作成しようとしていますが、そのレコードが記録されているという電子メール通知/確認を送信しようとしています。私は、PlayersモデルとLessonhoursモデルの間に多対多の関係を持っています。 Userモデルは、Playersモデルと1対1の関係にあります。 私はいくつかの異なる修正を加えて私の 'store'メソッドを実行しました。問題は、存在するプレイヤーの配列を取得できず、それぞれの電子メールを送信できないことです。私のフォームからの複数の選択がそれぞれのテーブルに正しく挿入されています。電子メールデータの収集に関しては、私は次のコードに最も近づいてきました。この問題は、存在するときに2つ以上のプレイヤーが1つしか得られないということです。私はこれが理にかなってほしい。以下のスクリーンショット$依頼配列のすべてのパラメータをキャプチャできません

コードとスクリーンショット: 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) 

次はループ内から戻ってきたので1通のメールしか送信しないため、最初のプレーヤーに1通のメールを送信してから返信します。あなたが行うことができ、再び使用していない一時的な変数を持って保存するには:

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', 

・ホープこのことができます!

+0

はい、すばらしいレッスンをありがとうございます。私は前のコードでプロセスを停止していることに気付かなかった。検証についてのヒントもありがとう。電子メールは単一または複数の受信者に非常にスムーズに送信されます。 – wdarnellg

関連する問題