Dopytovanie prepojení
Pýtať sa môžete ktorejkoľvek strany prepojenia:
$user->isConnectedTo($team); // bool
$user->isConnectedToAny($team->getMorphClass()); // bool
$team->hasConnector($user); // bool
$team->hasConnectorFromAny($user->getMorphClass());// bool
$user->connections; // connections this model initiated
$team->connectors; // connections pointing at this model- isConnectedTo(), isConnectedToAny(), hasConnector() a hasConnectorFromAny() počítajú pri zapnutom enforce_active_on_check len aktívne prepojenia.
- isConnectedToAny() a hasConnectorFromAny() očakávajú morph typ — odovzdajte $model->getMorphClass(), aby sa aliasy z morph mapy správne preložili.
- connections a connectors sú obyčajné relácie MorphMany nad všetkými nezmazanými riadkami bez ohľadu na stav — môžete na ne reťaziť podmienky a cez ne eager-loadovať druhú stranu.
$user->connections()->with('connectable')->get(); // eager-load the other side
$team->connectors()->with('connector')->get();
$team->connectors()->where('status', 'pending')->count();Scopes a obmedzené relácie
// Constrained relations (return MorphMany you can chain ->get()/->count()).
$user->activeConnections(); // accepted + not expired
$user->expiredConnections(); // past expiry
$user->expiringConnections($days = 7); // expiring within N days
$user->connectionsWithPermission('publish'); // honours '*' / 'posts.*'; active only while enforced
// Eloquent scopes on the model / relation.
$user->connections()->active()->get();
$user->connections()->expiringSoon(14)->get();
$user->connections()->withPermission('posts.edit')->get(); // exact, '*', 'posts.*' — any status
// Across every connector.
Connections::expiring(14)->get();| Scope | Relácia v traite | Vyberie |
|---|---|---|
active() | activeConnections() | Stav accepted a expires_at je null alebo v budúcnosti. |
expired() | expiredConnections() | expires_at je nastavené a v minulosti, bez ohľadu na stav. |
expiringSoon($days = 7) | expiringConnections($days = 7) | expires_at v najbližších N dňoch. |
withPermission($permission) | connectionsWithPermission($permission) | Niektoré uložené oprávnenie ho udeľuje — presný reťazec, * alebo koncový segmentový zástupný znak ako posts.*. Scope berie ľubovoľný stav; relácia pri zapnutom enforce_active_on_check len aktívne prepojenia. |
Scopes sú bežné Eloquent scopes na modeli Connection, takže fungujú v ľubovoľnom dopyte:
use RoundlyConsulting\Connections\Models\Connection;
Connection::query()->active()->withPermission('publish')->count();
Connection::query()->expiringSoon(3)->with(['connector', 'connectable'])->get();Typované načítanie
connectablesOfType() a connectorsOfType() vracajú samotné prepojené modely, nie riadky Connection. Odovzdajte plný názov triedy alebo zaregistrovaný morph alias:
// Fetch the connected models of a given type (FQCN or morph alias), not the Connection rows.
// Like isConnectedTo() / hasConnector(), only active links count while enforce_active_on_check is on.
$user->connectablesOfType(Team::class); // Collection<Team>
$user->connectablesOfType('team'); // the same, via a morph-map alias
$team->connectorsOfType(User::class); // Collection<User>Rovnako ako isConnectedTo() a hasConnector() počíta typované načítanie pri zapnutom enforce_active_on_check len aktívne prepojenia; pri vypnutom príznaku zahŕňa všetky nezmazané prepojenia daného typu.
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.