Модель арендатора в Filament
Давайте зададим модель арендатора.
Команда хранится
в таблице teams,
а работник связывается
с ней через промежуточную
таблицу. После настройки
панель откроем по
/admin/acme.
Создадим модель Team.php
и связь users
многие ко многим:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class Team extends Model
{
protected $fillable = [
'name',
'slug',
'domain',
];
public function users(): BelongsToMany
{
return $this->belongsToMany(User::class);
}
}
?>
На User.php добавим
обратную связь teams:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
public function teams(): BelongsToMany
{
return $this->belongsToMany(Team::class);
}
}
?>
В провайдере панели
укажем арендатора
через tenant:
<?php
namespace App\Providers\Filament;
use App\Models\Team;
use Filament\Panel;
use Filament\PanelProvider;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->default()
->id('admin')
->path('admin')
->login()
->tenant(Team::class);
}
}
?>
Привяжите панель к команде, в которой состоит работник.