public function boot() { FileBase::extend(function ($model) { $model->hasOne['exif'] = ['Hambern\\Exify\\Models\\Exif', 'delete' => true]; }); FileBase::extend(function ($model) { $model->bindEvent('model.afterCreate', function () use($model) { if (strpos($model->content_type, 'image') !== false) { $reader = Reader::factory(Reader::TYPE_NATIVE); $path = 'http://' . $_SERVER['SERVER_NAME'] . $model->path; $data = $reader->read($path)->getData(); foreach ($data as $k => $v) { $fill[snake_case($k)] = $v; } $exif = Exif::make($fill); $model->exif()->save($exif); } }); $model->bindEvent('model.beforeDelete', function () use($model) { if (strpos($model->content_type, 'image') !== false) { $model->exif()->delete(); } }); }); }