0

わかりました。記録を作成し、記録が記録されたことを知らせる電子メール通知/確認を送信しようとしています。Players モデルと Lessonhours モデルの間に多対多の関係があります。User モデルは Players モデルと一対多です。いくつかの異なる変更を加えて「ストア」メソッドを実行し、最終的にメールを送信しました。問題は、存在するプレイヤーの配列を取得して、それぞれにメールを送信できないことです。私のフォームからの複数の選択は、それぞれのテーブルに適切に挿入されています。電子メール データの収集に関しては、次のコードが最も近いものでした。THIS の問題は、プレイヤーが 2 人以上いるのに 1 人しか得られないことです。これが理にかなっていることを願っています。以下のスクリーンショット。

$request 配列のコードとスクリーンショット: $request オブジェクトのコードと dd()。

dd($request->players)

クエリの後、プレーヤーの配列をキャプチャしません。

プレーヤーの配列をキャプチャしていません dd($players)

$request オブジェクトにインデックスを追加するコード

インデックスを追加しようとした後のエラー メッセージ。

選手モデル: 選手モデル

私はこれについてあまり経験がなく、どのドキュメントの例を使用するかを特定するのが難しいと感じています. レコードの挿入後に送信するすべての電子メール アドレスを取得するにはどうすればよいですか? 提供されたすべてのヘルプに感謝します。

レッスン時間モデル: 授業時間モデル

店舗レッスン時間フォーム レッスン時間フォーム

ユーザーモデル ここに画像の説明を入力

4

1 に答える 1

0

配列 for 句の中に配列を入れている理由はわかりません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',

お役に立てれば!

于 2017-01-02T09:48:26.953 に答える