繁体   English   中英

如何在 Laravel 7 中更新或创建多个组?

[英]How to updateOrCreate multiple group in laravel 7?

这是我的表格

形式

为什么这个updateOrCreate不起作用? 当我将其更改为update 作品。 而且更新得很好。 但是updateOrCreate不起作用。

当我添加记录或更新记录时。 将被添加。 这意味着它不会被更新。

编辑刀片.php

<form method="post" action="{{ route('filters.update', ['filter' => $filter->id]) }}">
    @method('PUT')
    @csrf
        <select class="form-control selectpicker" title="چیزی انتخاب نشده است." id="category_id" name="category_id" data-live-search="true">
    @foreach($categories as $id => $name)
        <option value="{{ $id }}" {{ $filter->category_id == $id ? 'selected' : '' }}>{{ $name }}</option>
    @endforeach
    <input type="hidden" name="filters[{{ $loop->index }}][id]" value="{{ $filter->id }}">
    <input type="text" id="name" class="form-control" name="filters[{{ $loop->index }}][name]" value="{{ $filter->name }}">
    <input type="text" id="latin" class="form-control" name="filters[{{ $loop->index }}][latin]" value="{{ $filter->latin }}">
    <select id="field" class="form-select field" name="filters[{{ $loop->index }}][field]">
        <option value="0" {{ $filter->field == 0 ? 'selected' : '' }}>No</option>
        <option value="1" {{ $filter->field == 1 ? 'selected' : '' }}>Yes</option>
    </select>
</select>

过滤器控制器.php

public function update(Request $request, Filter $filter)
{
    $filters = collect([$request->filters]);
    $filters->each(function ($item) use ($request, $filter) {
        if (!isset($item['name']) && !isset($item['latin'])) {
            foreach ($item as $key => $row) {
                $data = [
                    'category_id' => $request->category_id,
                    'name' => $row['name'],
                    'latin' => $row['latin'],
                    'field' => $row['field'],
                ];
                Filter::updateOrCreate([
                    'id' => $row['id'],
                ], $data);
            }
        } else {
            return null;
        }
    });
    return redirect()->route('filters.index');
}

@纳科夫

我现在有这个。

一

当我添加一个

例如添加dd

过滤器表折叠。

二

当我添加这个时:

public function update(Request $request, Filter $filter)
{
    dd($request->all());

日

尝试删除 Filter::find 行并将其替换为 updateOrCreate 行:

Filter::updateOrCreate(
  ['id' => $row['id']], 
  [$data]
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM