Traity modelov
Členovia sa ukladajú polymorfne, takže členom tímu môže byť akýkoľvek Eloquent model — používateľ, hosťovský účet či API klient. Pridajte trait HasTeams na model, ktorý vystupuje ako člen, a získate pomocníkov pre členstvo, vlastníctvo, roly a oprávnenia:
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Teams\Traits\HasTeams;
class User extends Authenticatable
{
use HasTeams;
}API traitu HasTeams
$user->teams(); // MorphMany<Member> — the model's memberships
$user->ownedTeams(); // MorphMany<Team> — teams this model owns
$user->hasTeam(); // belongs to any team
$user->belongsToTeam($team); // is a member of $team
$user->isMemberOf($team); // alias of belongsToTeam()
$user->ownsTeam($team); // is the owner of $team
$user->teamsWithRole('admin'); // Collection<Member> holding that role
$user->teamRole($team); // ?Role — the resolved role on $team
$user->hasTeamRole($team, 'admin'); // bool
$user->hasTeamPermission($team, 'billing.manage'); // boolteams() vracia členstvá modelu — riadky Member, každý so svojím tímom a rolou — nie modely Team. Ak potrebujete samotné tímy, použite Team::query()->withMember($user).
Aktuálny tím cez BelongsToTeam
Pre aplikácie s prepínačom tímov dá BelongsToTeam modelu jeden aktuálny tím cez stĺpec team_id. Pokojne ho kombinujte s HasTeams:
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Teams\Traits\BelongsToTeam;
use RoundlyConsulting\Teams\Traits\HasTeams;
class User extends Authenticatable
{
use BelongsToTeam; // team() + switchTeamTo()
use HasTeams; // memberships, roles, permissions
}
$user->team; // the current Team (BelongsTo)
$user->switchTeamTo($team); // associates + saves, returns $userStĺpec patrí do vašej vlastnej tabuľky, preto k nemu balík migráciu nedodáva — pridajte si nullable team_id sami:
Schema::table('users', function (Blueprint $table): void {
$table->foreignId('team_id')->nullable()->constrained();
});Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.