繁体   English   中英

laravel,在forloop中使用updateOrCreate

[英]laravel, use of updateOrCreate inside forloop

我想使用 updateOrCreate 以防止重复我有商店并且需要为每个商店存储其工作时间(天,开放时间,关闭时间,可用)

可用日期 打开 关闭

星期一 [复选框] [输入] [输入]

星期二 [复选框] [输入] [输入]

星期三 [复选框] [输入] [输入]

但是在插入新值时我仍然会重复

Model:

protected $table = 'storedays';
protected $fillable = ['storeinfo_id', 'day_id','open_time','close_time','available'];
protected $primaryKey = 'id';

Controller:

public function store(Request $request)
{
    $store_id=$request->storeinfo_id;
    $open_time = $request->input('open_time');
    $close_time = $request->input('close_time');
   $available=$request->input('available');

        foreach ($request->input('day_id') as $key => $value) {
            if ( ! isset($available[$key])) {
               $available[$key] = 0;
            }
            else
            {
                $available[$key] = 1;
            }


            Storeday::updateOrCreate([
                'storeinfo_id' => $store_id,
                'day_id' => $value,
                'open_time' => $open_time[$key],
                'close_time' => $close_time[$key],
                'available' => $available[$key],
                

            ]);
        }

    return response()->json(['data' => trans('message.success')]);
}

updateOrCreate function 需要 2 个参数、匹配条件和额外值。 您需要将其更改为以下内容:

Storeday::updateOrCreate([
        'storeinfo_id' => $store_id,
        'day_id' => $value,
    ],[
        'open_time' => $open_time[$key],
        'close_time' => $close_time[$key],
        'available' => $available[$key],
]);

线路会做什么?

首先,它将查看表中是否有商店 ID 和日期 ID 的条目。 如果没有,它将创建一个新行。

您可以在此处了解有关更新或updateOrCreate的更多信息。

暂无
暂无

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

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