---
title: "Nastavenie modelov — Requests for Laravel | Roundly"
description: "Umožnite modelom schvaľovať cez trait GivesApprovals a podávať žiadosti cez trait HasRequests."
url: https://roundly-consulting.com/sk/open-source/navody/requests-for-laravel/nastavenie-modelov
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Requests for Laravel](https://roundly-consulting.com/sk/open-source/navody/requests-for-laravel.md)

# Nastavenie modelov

## Schvaľovatelia

Každý model, ktorý má schvaľovať žiadosti — typicky váš User — použije trait a rozhranie aktéra zo schvaľovacieho enginu:

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Approvals\Interfaces\GivesApprovalsInterface;
use RoundlyConsulting\Approvals\Traits\GivesApprovals;

class User extends Model implements GivesApprovalsInterface
{
    use GivesApprovals;
}
```

Aktér tým získa celé schvaľovacie API:

```php
$alice->approve($request, 'Looks good');     // record an approval with a reason
$alice->reject($request, 'Out of policy');   // record a rejection with a reason
$alice->cancelApproval($request);            // withdraw the decision
$alice->hasApproved($request);               // bool
$alice->hasRejected($request);               // bool
$alice->delegateApprovalsTo($bob);           // see Delegation
```

Rozhodnutia urobené priamo na aktérovi stále posunú stav žiadosti, keď engine uzavrie jej schvaľovaciu požiadavku. Ak chcete všetky udalosti balíka (ApprovalRecorded, ApprovalRevoked) a pri žiadostiach bez deklarovaných schvaľovateľov, rozhodujte cez fasádu Requests (Rozhodovanie o žiadostiach).

Rozhodnúť môže len deklarovaný schvaľovateľ alebo jeho zástupca, a to aj na aktérovi: $mallory->approve($request) vyhodí výnimku enginu UnauthorizedApprovalException a nič sa nezaznamená.

## Autori

Trait a kontrakt HasRequests pridajte každému modelu, ktorý podáva žiadosti. Získa reláciu morphMany a skratky filtrované podľa stavu:

```php
use RoundlyConsulting\Requests\Concerns\HasRequests;
use RoundlyConsulting\Requests\Contracts\HasRequests as HasRequestsContract;

class User extends Model implements HasRequestsContract
{
    use HasRequests;
}

$user->requests;                 // morphMany relation
$user->openRequests()->get();    // status = New
$user->approvedRequests()->get();
$user->rejectedRequests()->get();
```

Relácie používajú model nakonfigurovaný v requests.model, takže vlastnú podtriedu dostanete aj z $user->requests.

## Oboje na jednom modeli

Traity spolu nekolidujú, takže ten istý model môže žiadosti podávať aj schvaľovať:

```php
use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Approvals\Interfaces\GivesApprovalsInterface;
use RoundlyConsulting\Approvals\Traits\GivesApprovals;
use RoundlyConsulting\Requests\Concerns\HasRequests;
use RoundlyConsulting\Requests\Contracts\HasRequests as HasRequestsContract;

class User extends Authenticatable implements GivesApprovalsInterface, HasRequestsContract
{
    use GivesApprovals;
    use HasRequests;
}
```

## 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/requests-for-laravel.md)
