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

CompanyOwned.php 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Concerns;
  3. use App\Scopes\CurrentCompanyScope;
  4. use Illuminate\Database\Eloquent\ModelNotFoundException;
  5. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Facades\Log;
  8. use Wallo\FilamentCompanies\FilamentCompanies;
  9. trait CompanyOwned
  10. {
  11. public static function bootCompanyOwned(): void
  12. {
  13. static::creating(static function ($model) {
  14. if (empty($model->company_id)) {
  15. $companyId = session('current_company_id');
  16. if (! $companyId && Auth::check() && Auth::user()->currentCompany) {
  17. $companyId = Auth::user()->currentCompany->id;
  18. session(['current_company_id' => $companyId]);
  19. }
  20. if (! $companyId) {
  21. $companyId = Auth::user()->currentCompany->id;
  22. }
  23. if ($companyId) {
  24. $model->company_id = $companyId;
  25. } else {
  26. Log::error('CurrentCompanyScope: No company_id found for user ' . Auth::id());
  27. throw new ModelNotFoundException('CurrentCompanyScope: No company_id set in the session, user, or database.');
  28. }
  29. }
  30. });
  31. static::addGlobalScope(new CurrentCompanyScope);
  32. }
  33. public function company(): BelongsTo
  34. {
  35. return $this->belongsTo(FilamentCompanies::companyModel(), 'company_id');
  36. }
  37. }