PHP LARAVEL 更新 with save() 有时不起作用



我有一个奇怪的问题。我试图用保存功能更新数据库条目,但更改的列有时只更新,但大多数时候它们还没有改变,我没有得到任何错误。

这是我的更新函数中的代码:

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.
    
}

最新更新