Sök…


Introduktion

Tillbehör och mutatorer låter dig formatera Eloquent attributvärden när du hämtar eller ställer in dem i modellinstanser. Till exempel kanske du vill använda Laravel-krypteraren för att kryptera ett värde medan det är lagrat i databasen och sedan avkryptera attributet automatiskt när du kommer åt det på en Eloquent-modell. Förutom anpassade accessorer och mutatorer kan Eloquent också automatiskt kasta datumfält till kolinstanser eller till och med kasta textfält till JSON.

Syntax

  • ställ in {ATTRIBUTE} Attribut ($ attribut) // i kamelfall

Definiera en accessor

<?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);
    }
}

Få accessor:

Som du ser överförs det ursprungliga värdet på kolumnen till accessorn, så att du kan manipulera och returnera värdet. För att få åtkomst till värdet på accessorn kan du helt enkelt komma first_name attributet first_name en modellinstans:

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

Definiera en mutator

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

Ovanstående kod "bcrypting" varje gång lösenordsegenskapen ställs in.

$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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow