如何在 Laravel 中存储数组?

How to store array in Laravel?

有两个mysqltable1.seats(id,number),2.reservedseats(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_id 的数组,然后我想存储在保留席位 Mysql table 中。但是在商店控制器中我遇到了问题。我正在尝试类似的东西:

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();
}