在 Laravel 5.5 中找不到 User::create()

Getting User::create() not found in Laravel 5.5

当我尝试注册用户时,出现错误:

Call to undefined method App\Models\User::create()

这是我的用户模型:

<?php

namespace App\Models;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User
{
use Notifiable;

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

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

protected $table = 'users';

}

我使用了 Laravel 5.5 附带的 User 模型,但只是将其移至 Models 文件夹。我更新了 config/auth 文件以指向 App\Models\User。我有 运行 php artisan optimize 和 composer dump-autoload 几次,都无济于事。

这是我的注册控制器:

<?php
namespace App\Http\Controllers\Auth;

use App\Models\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller {

public $titles = [];

public $title = 'Registration';

use RegistersUsers;

/**
 * Where to redirect users after registration.
 *
 * @var string
 */
protected $redirectTo = '/home';

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest');
}

/**
 * Get a validator for an incoming registration request.
 *
 * @param  array  $data
 * @return \Illuminate\Contracts\Validation\Validator
 */
protected function validator(array $data)
{
    return Validator::make($data, [
        'first_name' => 'required|string|max:255',
        'last_name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6|confirmed',
    ]);
}

/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return \App\User
 */
protected function create(array $data)
{
    return User::create([
        'first_name' => $data['first_name'],
        'last_name' => $data['last_name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

public function showRegistrationForm() {
    return view('auth.register')
      ->with('env', $this->env)
      ->with('titles', $this->titles)
      ->with('title', $this->title);
}
}

从 Auth 包扩展 Laravel 用户模型时,您应该从该包扩展用户 class。包中的抽象 class 扩展了模型,然后您将可以访问所有模型方法。

来自Illuminate\Foundation\Auth\User:

class User extends Model implements
   AuthenticatableContract,
   AuthorizableContract,
   CanResetPasswordContract
{
   use Authenticatable, Authorizable, CanResetPassword;
}