观测者
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