①
public function store(Request $request)
{
// バリデーションのルールを設定
$request->validate([
'pickup_time.*' => 'required|date_format:H:i',
'pickup_location.*' => 'required|string',
'dropoff_time.*' => 'required|date_format:H:i',
'dropoff_location.*' => 'required|string',
]);
$user_id = auth()->user()->id;
foreach ($request->pickup_time as $date => $time) {
if (!is_null($time)) {
Yoyaku::updateOrCreate(
[
'user_id' => $user_id,
'date' => $date
],
[
'pickup_time' => $request->pickup_time[$date] ?? null,
'pickup_location' => $request->pickup_location[$date] ?? null,
'dropoff_time' => $request->dropoff_time[$date] ?? null,
'dropoff_location' => $request->dropoff_location[$date] ?? null,
]
);
}
}
return redirect()->back()->with('message', '投稿を作成しました');
}
②
use Illuminate\Support\Facades\Validator; // 必要に応じて追加
public function store(Request $request)
{
$user_id = auth()->user()->id;
// pickup_timeがnullでないことを確認
if ($request->pickup_time) {
foreach ($request->pickup_time as $date => $time) {
if (!is_null($time)) {
$dataToValidate = [
'pickup_time' => $request->pickup_time[$date] ?? null,
'pickup_location' => $request->pickup_location[$date] ?? null,
'dropoff_time' => $request->dropoff_time[$date] ?? null,
'dropoff_location' => $request->dropoff_location[$date] ?? null,
];
// バリデーションルール
$rules = [
'pickup_time' => 'required|date_format:H:i',
'pickup_location' => 'required|string',
'dropoff_time' => 'required|date_format:H:i',
'dropoff_location' => 'required|string',
];
$validator = Validator::make($dataToValidate, $rules);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
// 以降、データベースへの保存などの処理
}
}
}
// 処理が成功した場合のリダイレクト
return redirect()->back()->with('message', '投稿を作成しました');
}