【问题标题】:How to use createMany in Laravel如何在 Laravel 中使用 createMany
【发布时间】:2023-01-25 17:00:55
【问题描述】:

你好,我是 laravel 的新手,我有很多数组想用 createMany() 插入数据库,这是我到目前为止所做的代码:

public function store(Request $request)
{
    $request->validate([
        'order_number' => 'required',
        'client' => 'required',
        'products' => 'required',
        'amount' => 'required',
        'description' => 'required',
    ]);
    for($i = 0; $i < count($request->products); $i++)
    {
        $values[] = [
            'order_number' => $request->order_number,
            'client' => $request->client,
            'products' => $request->products[$i],
            'amount' => $request->amount[$i],
            'description' => $request->description,
        ];
    }
    dd($values);
   Order::createMany($values);
    return redirect('/')->with('msg', 'Order Saved successfully!');
}

我在互联网和文档中看到这样的示例:

createMany on createMany in Laravel?

Documentation

但我不明白它是如何工作的。

这是值的显示方式:

【问题讨论】:

    标签: laravel


    【解决方案1】:

    createMany() 只适用于关系,你应该使用的是insert()

    所以Order::insert($values);

    您可以在此处阅读有关插入的更多信息:https://laravel.com/docs/9.x/queries#insert-statements


    因为您希望更新时间戳,所以您可以这样做:

    foreach($values as $value){
       Order::create($value);
    }
    

    由于您在创建之前修改数组,因此您始终可以添加 updated_atcreated_at

    $values[] = [
       'order_number' => $request->order_number,
       'client' => $request->client,
       'products' => $request->products[$i],
       'amount' => $request->amount[$i],
       'description' => $request->description,
       'updated_at' => now(),
       'created_at' => now(),
    ];
    

    【讨论】:

    • 当我使用insert方法时,时间戳变为空,除非我在代码上写它现在获取时间
    • 所以在这种情况下基本上只有插入方法有效?
    • 你是对的。正确的方法是使用插入,但是如果你想要正确的时间戳,那么你可以只使用一个 foreach 循环,然后创建一个 :) 但是因为你正在修改数据数组,你总是可以注入 updated_at 和 created_at这红色
    • 谢谢你的评论,它对我帮助很大!
    • 很高兴它起作用了,我修改了我的答案以向您展示一种快速执行 updated_at 和 created_at 的方法。请记住一件事!如果您使用插入,它会将单个查询推送到数据库,而使用 foreach 循环时,它将创建多个插入查询。如果您觉得我已经回答了您的问题,请将我的回答标记为完整(打勾)祝您好运!
    猜你喜欢
    • 2014-12-09
    • 2021-08-31
    • 1970-01-01
    • 2023-02-21
    • 2021-08-21
    • 1970-01-01
    • 2019-12-12
    • 2023-02-16
    • 1970-01-01
    相关资源
    最近更新 更多