Search code examples
laravellaravel-passportlaravel-api

Method Illuminate\\Database\\Eloquent\\Collection::createToken does not exist


I am using laravel passport in py project and I want to create a token in every request for making it secure, but it not work now and I really became confused that what is the problem with my code, please help me.

here is my Model


use App\Models\Post;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use Spatie\MediaLibrary\Models\Media;
use Laravel\Passport\HasApiTokens;


class User extends Authenticatable implements HasMedia
{
    use HasApiTokens, Notifiable;

    use HasMediaTrait;


    public function registerMediaConversions(Media $media = null)
    {

        $this->addMediaConversion('thumb')
            ->crop('crop-center', 50, 50);


        $this->addMediaConversion('list')
            ->fit('crop', 312, 312);


        $this->addMediaConversion('big')
            ->fit('fill', 1248, 1248);

    }

    protected $fillable = [
        'name', 'email', 'password', "role"
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];

    protected $casts = [
        'email_verified_at' => 'datetime',
    ];


    public function posts()
    {

        return $this->hasMany(Post::class, 'post_author');

    }


}

here is my controller

    {
        $data = \App\User::all();
        $accessToken = $data->createToken('Token')->accessToken;
        return response(['usersData' => $data]);
    }

Solution

  • I solved my problem with bellow code:)

     $user = Auth::user();
            $success['token'] =  $user->createToken('MyApp')-> accessToken;
            return response()->json(['success' => $success], $this-> successStatus);