我有一个奇怪的问题。我试图用保存功能更新数据库条目,但更改的列有时只更新,但大多数时候它们还没有改变,我没有得到任何错误。
这是我的更新函数中的代码:
public function editadvocatedetails(Request $request){
try {
##get original data
$oldclaimantdets = Clthirdparties::where('claimant_code',$request->claimant_code)->first();
// ##get new data
$claimant_dets = Clthirdparties::where('record_type',$oldclaimantdets->record_type)->where('code',$oldclaimantdets->code)->first();
$claimant_dets->name = $request->name;
$claimant_dets->record_type = $request->record_type;
$claimant_dets->claimant_type = $request->claimant_type;
$claimant_dets->e_mail=$request->e_mail;
$claimant_dets->id_no=$request->id_no;
$claimant_dets->pin_number = $request->pin_number;
$claimant_dets->mobile = $request->mobile;
// // dd($claimant_dets);
$claimant_dets->save();
// dd($claimant_dets);
$mm = $claimant_dets->getChanges();
$user = Auth::user()->user_name;
$process = 'Update Claimant Details';
$claimant_code = $request->claimant_code;
$yy = $this->log_data($mm,$claimant_dets,$user,$process,$claimant_code);
Session::flash('success,'.$request->name.' details has been updated');
return redirect()->back();
} catch (Throwable $th) {
Session::flash('error,'.$request->name.' failed to be updated');
return redirect()->back();
}
}
我的模型:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Clthirdparties extends Model
{
protected $connection = 'oracle';
protected $table='clthirdparties';
public $timestamps=false;
public $keyType = 'string';
public $primaryKey='claimant_code';
public $incrementing=false;
protected $guarded = [];
}
当我在保存之前打印值时,我得到了新旧数据的正确值。
看起来save()没有执行。执行重定向。
我知道update()方法,但我使用这种方式来更新我的数据库中的条目很多,直到现在我从来没有遇到任何问题,我不知道问题在哪里。
在此期间,我已经恢复到update()来运行更新查询来解决问题。但我还是想知道为什么会这样?
也许有人有主意?
有时候嗯…, save()方法在形式上依赖于模型中的$fillable属性数组。因此,请尝试定义可填充属性。
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Clthirdparties extends Model
{
protected $connection = 'oracle';
protected $table='clthirdparties';
public $timestamps=false;
public $keyType = 'string';
public $primaryKey='claimant_code';
public $incrementing=false;
protected $guarded = [];
protected $fillable = ['name','record_type','claimant_type','e_mail','id_no','pin_number','mobile',] ; //include all your attributes here.
}