Пользовательский атрибут модели Laravel 5.5

Я получаю информацию о пользователе:

 /**
 * User info
 * Retrieve the user info based on the Access Token
 *
 * @param Request $request
 */
public function user(Request $request)
{
    return $this->successResponse(request()->user(), 200);
}

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

Я попытался добавить общедоступную переменную gravatar в модель пользователя, но они не были восстановлены:

class User extends Authenticatable 
{
use Notifiable, HasApiTokens;

public $gravatar = "hi";

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token','id','created_at','updated_at',
];


public function ideas()
{
    return $this->hasMany(Idea::class);
}

}

Что вы имеете в виду, публичная переменная не извлекается? У вас должна быть возможность получить к нему доступ через request () -> user () -> gravatar

Ghlen 20.04.2018 21:10

вернуть $ this-> successResponse (request () -> user (), 200);

Stefano Maglione 20.04.2018 21:11

У меня есть только поля db, возвращенные в приведенном выше вызове

Stefano Maglione 20.04.2018 21:12

Каково содержание вашего метода successResponse?

Ghlen 20.04.2018 21:14

вернуть ответ () -> json ($ data, $ code);

Stefano Maglione 20.04.2018 21:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
480
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что вы хотите сделать, так это настроить аксессоры в своем классе Eloquent. Если вы позже захотите это при получении данных модели, вы установите свойство $appends в своем классе.

Настройте аксессуар, добавив его в свой класс:

public function getFooAttribute() {
    return 'foobar';
}

Затем вы получаете доступ к атрибуту с помощью $model->foo. Измените Foo в getFooAttribute, чтобы изменить имя атрибута.

Если позже вы захотите получить к нему доступ при попытке получить все атрибуты или при попытке jsonify его, вы добавляете это в свойство $appends:

protected $appends = ['foo'];

Это объясняется в документации на https://laravel.com/docs/5.6/eloquent-serialization#appending-values-to-json

Другие вопросы по теме