Szukaj…


Wprowadzenie

Akcesoria i mutatory pozwalają sformatować Elokwentne wartości atrybutów podczas ich pobierania lub ustawiania na instancjach modelu. Na przykład możesz użyć szyfratora Laravel, aby zaszyfrować wartość, gdy jest ona przechowywana w bazie danych, a następnie automatycznie odszyfrować atrybut, gdy uzyskasz do niego dostęp w modelu Eloquent. Oprócz niestandardowych akcesoriów i mutatorów Eloquent może także automatycznie rzutować pola daty na instancje Carbon, a nawet rzutować pola tekstowe na JSON.

Składnia

  • ustaw {ATTRIBUTE} Atrybut ($ atrybut) // w przypadku wielbłąda

Definiowanie akcesoriów

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * Get the user's first name.
     *
     * @param  string  $value
     * @return string
     */
    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }
}

Uzyskiwanie Accessor:

Jak widać, pierwotna wartość kolumny jest przekazywana do akcesorium, umożliwiając manipulowanie i zwracanie wartości. Aby uzyskać dostęp do wartości akcesora, możesz po prostu uzyskać dostęp do atrybutu first_name w instancji modelu:

$user = App\User::find(1);
$firstName = $user->first_name;

Definiowanie mutatora

class User extends Model  
{
    public function setPasswordAttribute($password)
    {
        $this->attributes['password'] = bcrypt($password);
    } 
    ... 
}

Powyższy kod „bcrypting” za każdym razem, gdy ustawiana jest właściwość hasła.

$user = $users->first();
$user->password = 'white rabbit'; //laravel calls mutator on background
$user->save(); // password is bcrypted and one does not need to call bcrypt('white rabbit')


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow