【问题标题】:How to check if record is already exists and then update or insert in laravel?如何检查记录是否已经存在,然后在 laravel 中更新或插入?
【发布时间】:2018-02-25 06:59:03
【问题描述】:

我正在尝试首先检查数据是否已经存在。如果数据已经存在,则更新函数,否则插入新记录。 插入新记录时它正在工作,但我不想将来重复行。

    public function store(Request $request)
    {
        $requestData = $request->all();
        
            $jobseeker = new Jobseeker();
            $jobseeker->fullname= $requestData['full name'];
            $jobseeker->gender= $requestData['Gender'];
            $jobseeker->messenger_user_id= $request->{'messenger user id'};
            $jobseeker->save();
    }

这是我尝试的方法,我检查 messenger 用户 id 是否已经存在,如果 messenger 用户 id 已经存在,我想更新现有行,否则我想插入一个新行。

    public function store(Request $request,$messenger_user_id)
    {
        $requestData = $request->all();

        $my_msg_id = Jobseeker::where('messenger_user_id',$requestData['messenger user id'])->first();
        
        if (is_null($my_msg_id)) {
          $jobseekers = Jobseeker::find($messenger_user_id);
          $jobseeker->fullname= $requestData['full name'];
          $jobseeker->gender= $requestData['Gender'];
          $jobseeker->messenger_user_id= $request->{'messenger user id'};
        }
        else{
            $jobseeker = new Jobseeker();
            $jobseeker->fullname= $requestData['full name'];
            $jobseeker->gender= $requestData['Gender'];
            $jobseeker->messenger_user_id= $request->{'messenger user id'};
            $jobseeker->save();
        }

    }

【问题讨论】:

  • 你听说过 laravel 中的 firstOrCreate/ firstOrNew 方法吗?在此处查看文档laravel.com/docs/5.5/eloquent#inserts
  • 嗨,是的,我以前听说过,为什么?
  • 那么最好用这些方法解决你的问题
  • firstOrCreate([], []) 方法将完成这项工作.. 它需要 2 个参数,第一个是您要查询的字段数组(其中参数),第二个是您的数据数组想插入..所以基本上如果不存在行,它将创建一个新行,否则它将更新该行..

标签: php mysql laravel


【解决方案1】:

你不需要在 laravel 中自己做所有这些。使用方法firstOrCreate

$data_array = [
    'full_name' => $requestData['full name'],
    'gender' => $requestData['Gender'],
];

$jobseeker = App\Jobseeker::firstOrCreate(['messenger_user_id' => $messenger_user_id], $data_array);

它将数组作为第一个参数来查找模型,将数组作为第二个参数以使用该数组中的给定键值更新记录,或者它将使用给定数据创建一个新记录,然后返回模型对象。

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 2010-12-29
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多