Php 如果不存在,则插入新记录,如果存在,则更新,laravel 5.4
如果不存在新记录,是否有方法插入新记录,如果存在,是否有方法更新记录?下面是我使用的代码Php 如果不存在,则插入新记录,如果存在,则更新,laravel 5.4,php,laravel-5,Php,Laravel 5,如果不存在新记录,是否有方法插入新记录,如果存在,是否有方法更新记录?下面是我使用的代码 public function store(Request $request) { $inputs = $request->all(); $this->validate($request,[ 'course_code'=>'required' ]); $batch = $request->batch; $stud
public function store(Request $request)
{
$inputs = $request->all();
$this->validate($request,[
'course_code'=>'required'
]);
$batch = $request->batch;
$students = User::select('student_id')->where('batch', $batch)->get();
$course_codes = $inputs['course_code'];
$data=[];
foreach ($students as $student) {
foreach ($course_codes as $course_code) {
$data[]=[
'batch' => $batch,
'student_id' => $student->student_id,
'semester' => $inputs['semester'],
'course_code' => $course_code,
"created_at" => \Carbon\Carbon::now(), # \Datetime()
"updated_at" => \Carbon\Carbon::now() # \Datetime()
];
}
}
DB::table('assign_batches')->insert($data);
return redirect('/admin/assign/batch/create')->with('message', 'A batch has been assigned to courses successfully!');
}
这是我再次插入相同记录时的输出。
但我希望一个学生Id可以有许多课程代码,但不能重复。所以我想检查学生是否有相同的课程,然后跳过或更新,并插入新的记录。
请帮帮我。
谢谢。检查
id
如果存在,则更新,否则插入
if(isset($request->id)){
DB::table('assign_batches')->where("id", $request->id)->update($data);
}else {
DB::table('assign_batches')->insert($data);
}
使用
例如,如果您有一个表,供每个用户投票一次或更新其投票
//give the record to use
$record = request('vote');
//checkif there is a record for user in model
$row = Uservoting::where('user_id',Auth->user()->id)->first;
//if true
if($row!==null){
//update
$row::update(['vote' => $record]);
//if there isn't in model
}else{
//create a new row and insert the value
$new_row = new Uservoting();
$new_row->user_id = Auth->user()->id ;
$new_row->vote = $record ;
$new_row->vote();`
}
希望这项工作:{--如果您发现任何错误,请告诉我--}}您也可以使用sql查询:$sql=“插入到{$\u table}({$\u columns})值{$\u VALUES}上的重复键更新{$updates}”;语句($sql);谢谢你的回答。事实上,我想检查一个表行中是否存在两条记录(学生id和课程代码)。请您澄清一下好吗?为在laravel模板视图中唯一的
id
设置一个隐藏输入,并根据给出的答案进行检查。我认为无需使用course\u code
使用$isDuplicate=DB::table('assign\u batches')->where('student\u id',$student->student\u id)->where('course\u code',$course\u code)检查->count()
然后检查$isDuplicate>0
是否更新,否则插入。什么是foo。完全解释。@SumitKumarGuptafoo
只是与firstOrNew无关的另一列
//give the record to use
$record = request('vote');
//checkif there is a record for user in model
$row = Uservoting::where('user_id',Auth->user()->id)->first;
//if true
if($row!==null){
//update
$row::update(['vote' => $record]);
//if there isn't in model
}else{
//create a new row and insert the value
$new_row = new Uservoting();
$new_row->user_id = Auth->user()->id ;
$new_row->vote = $record ;
$new_row->vote();`
}