Laravel model observer updated & deleted events are not trigerring?

Viewed 588

Observer

class FileLogObserver
  {
   public function updated(FileLogs $fileLogs)
    {
        $fileChangeLogs = FileChangeLogs::firstWhere('fileId', $fileLogs->filedId);

        if ( !empty($fileChangeLogs)) {
            $fileChangeLogs->save([
                'logDetails' => '1 file updated',
            ]);
        }
    }
}

Controller

class FileLogController extends Controller
{
   public function update(Request $request,$id){  
            
            $validator = Validator::make(
                $request->all(),
                [
                    
                    'orderId'    => 'required|integer',
                    'fileId'    => 'required|integer',
                    'status'    => 'required|string'
                ]
            );
    
            if ($validator->fails()) {
                return response()->json($validator->errors(), 400);
            }
    
            $data = FileLogs::find($id); 
            if($data){
               $data->orderId=$request->orderId;
               $data->fileId=$request->fileId;
               $data->status=$request->status;
               $data->update();
            
                return response()->json(['status'=>'success','StatusCode'=> 200,'message'=>'Successfully Updated','data'=>$data]);
            }
            else{
                return response()->json(['status'=>'Failed','message'=>'Update Failed'],400);
            }
        }
}

The created & retrieved methods are being properly triggered. However, the updated & deleted methods not triggered. Gone through many links & read that a reason can be becoz the update is not directly on the model. so, i tried like below in my controller. But update function is not working this method. I'm using Laravel-8 version. Any help is much appreciated.

$data = FileLogs::find($id); 
if($data){
          $data->update(['$data->orderId'=>'$request->orderId','$data->fileId'=>'$request->fileId','$data->status'=>'$request->status']);
1 Answers

you need to register those observer in App\Providers\EventServiceProvider

like


/**
 * Register any events for your application.
 *
 * @return void
 */
public function boot()
{
    FileLogs::observe(FileLogObserver::class);
}

ref link https://laravel.com/docs/8.x/eloquent#observers

Related