Vytváření vlastních obsazení v Laravelu

Vytváření vlastních obsazení v systému Laravel Aplikace Eloquent v systému Laravel poskytuje jednoduchý způsob, jak přiřazovat atributy běžným datovým typům, jako jsou celá čísla,...

Poptat web

07. 08. 2025

Vytváření vlastních obsazení v Laravelu

Vytváření vlastních obsazení v systému Laravel

Aplikace Eloquent v systému Laravel poskytuje jednoduchý způsob, jak přiřazovat atributy běžným datovým typům, jako jsou celá čísla, logické symboly, pole a dokonce i objekty. Někdy však vestavěné casty nestačí. V takovém případě je třeba vlastní odlitky přijít. Umožňují definovat vlastní logiku ukládání a načítání atributů modelu.

V tomto příspěvku si ukážeme, jak vytvořit a používat vlastní obsazení v systému Laravel.

Krok 1: Vytvoření vlastní třídy obsazení

Chcete-li vytvořit vlastní obsazení, musíte implementovat příkaz CastsAttributes rozhraní. Toto rozhraní vyžaduje dvě metody:

  • get($model, $key, $value, $attributes) - použitý při načítání hodnoty z databáze
  • set($model, $key, $value, $attributes) - použitý při ukládání hodnoty do databáze

Zde je příklad vlastního obsazení, které zašifruje a dešifruje hodnotu:

namespace App\Casts;
 
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
use Illuminate\Support\Facades\Crypt;
 
class Encrypted implements CastsAttributes
{
public function get($model, $key, $value, $attributes): string
{
return Crypt::decryptString($value);
}
 
public function set($model, $key, $value, $attributes): string
{
return Crypt::encryptString($value);
}
}

Toto obsazení automaticky zašifruje hodnotu před uložením do databáze a dešifruje ji při jejím načtení.

Krok 2: Použití vlastního odlitku v modelu

Jakmile je vlastní obsazení připraveno, můžete jej přiřadit atributu modelu pomocí příkazu $casts nemovitosti:

use App\Casts\Encrypted;
 
class User extends Model
{
protected $casts = [
'secret' => Encrypted::class,
];
}

Nyní můžete při každém přístupu $user->secret, hodnota bude dešifrována, a když nastavíte $user->secret = 'value', bude před uložením zašifrován.

Další poznámky

  • Vlastní obsazení musí být třída, která implementuje CastsAttributes.
  • Vlastní obsazení vám dává plnou kontrolu nad chováním atributů.

Původní článek publikoval Nabil Hassen.