Laravel模型观察者更新和删除的事件不是三重奏?



观测者

class FileLogObserver
{
public function updated(FileLogs $fileLogs)
{
$fileChangeLogs = FileChangeLogs::firstWhere('fileId', $fileLogs->filedId);
if ( !empty($fileChangeLogs)) {
$fileChangeLogs->save([
'logDetails' => '1 file updated',
]);
}
}
}

控制器

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);
}
}
}

CCD_ 1&retrieved方法被正确触发。然而,updated&未触发deleted方法。经历了许多环节&请注意,原因可能是因为更新不直接在模型上。所以,我试着在我的控制器下面。但是update函数不能用这种方法工作。我使用的是Laravel-8版本。非常感谢您的帮助。

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

您需要在AppProvidersEventServiceProvider中注册这些观察者


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

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

最新更新