Как вставить пользовательский атрибут в красноречивый объект (модель) после выборки? - PullRequest
2 голосов
/ 21 сентября 2019

У меня есть пользовательская модель User, и я хочу отправить пользовательский атрибут в модель после извлечения данных.Как я могу это сделать?

Я знаю, что перед извлечением мы можем добавить пользовательские атрибуты, например:

class User extends Model
{
    protected $appends = ['callable'];

    public function getCallableAttribute()
    {
        $callable = $this->getMeta('phone') ? true : false;
        return $callable;
    }
}

Но как это сделать после извлечения данных, например, после:

$user = User::find(1);

А теперь, как добавить пользовательский атрибут к извлеченным User данным объекта?

1 Ответ

1 голос
/ 21 сентября 2019

Вы можете определить Laravel Accessor для этого

Например

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

    /**
     * Get the user's full name.
     *
     * @return string
     */
     public function getFullNameAttribute()
     {
        return "{$this->first_name} {$this->last_name}";
     }
}

Затем вы можете получить доступ к Аксессорам следующим образом:

$user = App\User::find(1);
$firstName = $user->first_name; // In studly Case
$firstName = $user->full_name; // In studly Case

Вы можете прочитать больше о Аксессорах Laravel здесь: https://laravel.com/docs/5.8/eloquent-mutators#defining-an-accessor

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...