您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

CompanyProfile.php 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Models\Setting;
  3. use App\Concerns\Blamable;
  4. use App\Concerns\CompanyOwned;
  5. use App\Enums\Setting\EntityType;
  6. use App\Models\Common\Address;
  7. use Database\Factories\Setting\CompanyProfileFactory;
  8. use Illuminate\Database\Eloquent\Casts\Attribute;
  9. use Illuminate\Database\Eloquent\Factories\Factory;
  10. use Illuminate\Database\Eloquent\Factories\HasFactory;
  11. use Illuminate\Database\Eloquent\Model;
  12. use Illuminate\Database\Eloquent\Relations\MorphOne;
  13. use Illuminate\Support\Facades\Storage;
  14. class CompanyProfile extends Model
  15. {
  16. use Blamable;
  17. use CompanyOwned;
  18. use HasFactory;
  19. protected $table = 'company_profiles';
  20. protected $fillable = [
  21. 'company_id',
  22. 'logo',
  23. 'phone_number',
  24. 'email',
  25. 'tax_id',
  26. 'entity_type',
  27. 'created_by',
  28. 'updated_by',
  29. ];
  30. protected $casts = [
  31. 'entity_type' => EntityType::class,
  32. ];
  33. protected $appends = [
  34. 'logo_url',
  35. ];
  36. protected function logoUrl(): Attribute
  37. {
  38. return Attribute::get(static function (mixed $value, array $attributes): ?string {
  39. if ($attributes['logo']) {
  40. return Storage::disk('public')->url($attributes['logo']);
  41. }
  42. return null;
  43. });
  44. }
  45. public function address(): MorphOne
  46. {
  47. return $this->morphOne(Address::class, 'addressable');
  48. }
  49. protected static function newFactory(): Factory
  50. {
  51. return CompanyProfileFactory::new();
  52. }
  53. }