为了账号安全,请及时绑定邮箱和手机立即绑定

在模型上调用 save() 将更新数据库中的每一行

在模型上调用 save() 将更新数据库中的每一行

PHP
蝴蝶刀刀 2022-07-22 09:58:47
我在迁移文件中有以下功能。迁移是添加一个新列,然后更新现有条目的列:<?phpprivate function updatePlans(){    $plans = PlanProvider::query()->get();    foreach ($plans as $plan) {        $plan->num_adults = 1;        if (stripos($plan->rate_name, 'couple') !== false) {            $plan->num_adults = 2;        }        $plan->save();    }}现在,这里发生的是,当我调用 时save(),它会更新每个模型,而不是循环内的模型。我对另一个迁移有类似的功能,它按预期工作。为什么这会更新每个模型而不仅仅是一个模型?
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

$plans是一个包含您所有“计划”的集合。你$plan->save();超出了你的if条件,所以很明显它会更新每一行,不管它是 1 还是 2num_adults



查看完整回答
反对 回复 2022-07-22
?
心有法竹

TA贡献1866条经验 获得超5个赞

你可以试试这个

<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class PlanProvider extends Model

{


    protected $table = 'plan_provider';

    

    protected $guarded = [];

    public $timestamps = false;

}



private function updatePlans()

{

    $plans = PlanProvider::findOrFail(id);

    $plans->num_adults = 1;

    $plans->save();

    

    return redirect()->back();  

}


查看完整回答
反对 回复 2022-07-22
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

public function store(Request $request)

    {



        $this->validate($request,[

            'email' => 'required|email|unique:subscribers'

        ]);


        $subscriber = new Subscriber();

        $subscriber->email = $request->email;

        $subscriber->save();

        Toastr::success('You are Successfully Added Our Subscriber List:)','Success');

        return redirect()->back();


   }


查看完整回答
反对 回复 2022-07-22
  • 3 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信