从多个 select 下拉列表中插入 2 个表(透视)数组值

insert into 2 tables (pivot) array values from multiple select dropdown list

我与事件和年份一起工作,一个事件可以在几年内发生,一年可以有 几个事件(枢轴 table 在两个 table 之间创建)。

我在多个列表中更改我的单个下拉列表:

<select id="year_id" type="text" class="form-control selectpicker @error('year_id') is-invalid @enderror" name="year_id[]" required multiple>
<option disabled>--Choisir--</option>
        @foreach($years as $year)
                @if(old('year') == $year->id)
                     <option value="{{ $year->id }}" selected>{{ $year->name }}</option>
                @else
                     <option value="{{ $year->id }}">{{ $year->name }}</option>
                @endif
        @endforeach

</select>

目标是 select 几年同一事件。

我不知道为什么,但我想我无法验证表单。

这是我的控制器代码:

public function store(Request $request)
    {

        $validatedData = $request->validate([
            'name' => 'required|string|max:255',
            'mnemonique' => 'required|string|max:255',
            'color' => 'required|string|max:255',
            'year_id[]' => 'required|array',
            'year_id[].*' => 'required|integer|exists:years,id'
        ]);

        $evenement = new Evenement();
        
         //dd($validatedData);
        // $evenement->create($validatedData);

        

        $evenement = Evenement::create($validatedData);
        $evenement->years()->sync([$validatedData['year_id[]']]);

我无法将事件插入枢轴 table 并将新事件插入事件 table。

如果我用dd(),我还是刷新了表单,我想我没有进入控制器...

你看到什么了吗?

提前致谢。

将验证规则更改为

'year_id' => 'required|array',
'year_id.*' => 'required|integer|exists:years,id'

在视图中显示错误消息

@error('year_id')<div class="invalid-feedback">{{$message}}</div> @enderror

 @if($errors->has('year_id.*')) <div class="invalid-feedback">Selected Year doesnt exists</div>  @endif

正在保存到数据库中

 $evenement->years()->sync($validatedData['year_id']);