Я получаю информацию о пользователе:
/**
* 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);
}
}
вернуть $ this-> successResponse (request () -> user (), 200);
У меня есть только поля db, возвращенные в приведенном выше вызове
Каково содержание вашего метода successResponse?
вернуть ответ () -> json ($ data, $ code);






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