【发布时间】: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 个参数,第一个是您要查询的字段数组(其中参数),第二个是您的数据数组想插入..所以基本上如果不存在行,它将创建一个新行,否则它将更新该行..