BaseModel.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Builder;
  4. use Illuminate\Foundation\Auth\User as Authenticatable;
  5. use Illuminate\Notifications\Notifiable;
  6. use Laravel\Sanctum\HasApiTokens;
  7. use Carbon\Carbon;
  8. /**
  9. * Admin
  10. * @mixin Builder
  11. * @method static Builder|static where($column, $operator = null, $value = null, $boolean = 'and')
  12. * @method static Builder|static create($data)
  13. * @method static Builder|static insert($array)
  14. *
  15. */
  16. class BaseModel extends Authenticatable
  17. {
  18. use HasApiTokens, Notifiable;
  19. protected $table = '';
  20. protected $hidden = ['created_at', 'updated_at'];
  21. protected $fillable = [];
  22. protected static function booted()
  23. {
  24. static::saved(function ($model) {
  25. try { \App\Services\Reporting\ReportContext::captureModel($model); }
  26. catch (\Throwable $e) { \Illuminate\Support\Facades\Log::error('reporting_context_failed', ['source' => $model->getTable(), 'id' => $model->getKey(), 'error' => get_class($e)]); }
  27. });
  28. }
  29. protected function getCreatedAtAttribute($value): string
  30. {
  31. return Carbon::parse($value)->setTimezone('Asia/Shanghai')->format('Y-m-d H:i:s');
  32. }
  33. protected function getUpdatedAtAttribute($value): string
  34. {
  35. return Carbon::parse($value)->setTimezone('Asia/Shanghai')->format('Y-m-d H:i:s');
  36. }
  37. }