【问题标题】:Increment the order number by 1 in a controller when a new item is uploaded using Laravel使用 Laravel 上传新商品时,控制器中的订单号加​​ 1
【发布时间】:2020-06-18 13:25:37
【问题描述】:

我想在上传新商品时将订单号加 1。我有一个上传多张图片的图片上传器,基本上我希望在上传新图片时增加订单,但保持现有图片订单号相同。我尝试使用increment() 方法,但是当我尝试这样做时,它增加了我不想要的现有图像订单号,但随后新的图像订单号产生了一个奇怪的数字,例如 25。我有点不确定为什么会发生这种情况,或者我错过了一些重要的事情,谢谢。

此代码在控制器的存储功能中设置。

if($request->hasfile('images'))
{
    foreach($request->file('images') as $image)
    {
        $filenameWithExt = $image->getClientOriginalName();

        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);

        $extension = $image->getClientOriginalExtension();

        $fileNameToStore = $filename.'_'.time().'.'.$extension;

        $path = $image->storeAs('public/image', $fileNameToStore);

        $image = new Images;
        $increment = Images::increment('order', 1);
        $image->order = $increment;
        $image->images = $fileNameToStore;
        $image->post_id = $post->id;
        $image->save();
    }
} else {
    $fileNameToStore = null;
}

【问题讨论】:

  • $image->order = $increment; 更改为$image->increment('order');

标签: php laravel


【解决方案1】:

我会做一个 max() 来获取最新的增量值:

$max = Images::where('post_id', $post->id)->max('order');
$order = $max+1;

【讨论】:

  • 谢谢,现在删除工作会是相反的吗?所以如果有 3 张图片,图片订单号 2 被删除了,会不会把订单号 3 改成订单号 2
  • 这应该是一个不同的问题,但你应该从你的图像模型中删除,然后 $images = Images::where('post_id', $post->id)->get();然后在 foreach 循环中根据 $key 值更新您的订单。
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 2013-04-20
  • 2019-01-21
  • 2018-09-20
  • 1970-01-01
  • 2019-08-31
  • 2021-11-21
  • 1970-01-01
相关资源
最近更新 更多