Есть две таблицы mysql: 1. места (id, число), 2. зарезервированные места (id, seat_id, sceering_id). Я показываю все места определенного сценария как флажки в show.blade:
{!!Form::model($screening,['method'=>'post', 'action'=>
['ReserveController@store',$screening->auditorium->id]])!!}
<input type = "hidden" name = "screening_id" value = "{{$screening->id}}">
@foreach($seats as $seat)
<label class = "checkbox-inline">
{!!Form::checkbox('seat_id[]',$seat->id,null)!!} Number: {{$seat->number}}
</label>
@endforeach
<div class='form-group'>
{!!Form::submit('Create Post',['class'=>'btn btn-primary '])!!}
</div>
{!!Form::close()!!}
Когда я устанавливаю флажок, он переходит в массив seat_id []. Поэтому я отправляю скрытый ввод и массив с seat_ids, которые я хочу сохранить в таблице Mysql зарезервированных мест. Но в контроллере магазина у меня проблема. Я пробую что-то вроде:
public function store(Request $request){
$screening_id = $request->screening_id;
$seat_ids = $request->seat_id;
foreach($seat_ids as $seat_id){
Seatreserved::create($seat_id,$screening_id);
}
}
Так что это не работает, но как я могу это решить?






Попробуйте этот код
public function store(Request $request)
{
$screening_id = $request->screening_id;
$seat_ids = $request->seat_id;
foreach($seat_ids as $seat_id) {
Seatreserved::create([
'seat_id' => $seat_id,
'screening_id' => $screening_id
]);
}
}
Также вы можете использовать
public function store(Request $request)
{
$screening_id = $request->screening_id;
$seat_ids = $request->seat_id;
$data = [];
foreach($seat_ids as $seat_id) {
$data[] = [
'seat_id' => $seat_id,
'screening_id' => $screening_id
];
}
Seatreserved::insert($data);
}
Это лучший способ сделать это, поскольку он будет взаимодействовать с базой данных только один раз.
Вы также можете создать новый экземпляр своей модели для хранения значений.
Пример:
foreach($seat_ids as $seat_id) {
$reserved = new Seatreserved();
$reserved->seat_id = $seat_id;
$reserved->screening_id = $screening_id;
$reserved->save();
}