在某些路线中显示隐藏的 属性 (api_token)

Show hidden property in certain routes (api_token)

我正在使用 Laravel 5.5.13。我通过以下方式为我的用户迁移提供了一个 api_token 字段:

php artisan make:migration --table=users adds_api_token_to_users_table

然后像这样实施迁移:

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('api_token', 60)->unique()->nullable();
    });
}

public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn(['api_token']);
    });
}

我希望此 "api_token" 字段仅针对某些端点显示,而对其余端点隐藏。如果在我的 User.php 模型中,如果我添加到 protected $hidden = [] 数组,那么它会全部隐藏。我需要这个 "api_token" 字段显示在我的 LoginController.php:

中的注册和登录端点
public function login(Request $request)
{
    $this->validateLogin($request);

    if ($this->attemptLogin($request)) {
        $user = $this->guard()->user()->load('pets');
        $user->generateToken();

        return $user;
    }

    return $this->sendFailedLoginResponse($request);
}

在我的 RegisterController.php

protected function registered(Request $request, $user)
{
    $user->generateToken();

    return response()->json($user, 201);
}

是否可以在这些端点中显示隐藏字段?

如果您想让一些通常隐藏的属性在给定的模型实例上可见,您可以使用 makeVisible() 方法。 https://laravel.com/docs/5.5/eloquent-serialization