Получение User :: create () не найдено в Laravel 5.5 - PullRequest
0 голосов
/ 29 апреля 2019

Когда я пытаюсь зарегистрировать пользователя, я получаю сообщение об ошибке:

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';

}

Я использовал модель User, которая поставляется с Laravel 5.5, но просто переместил ее в папку 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);
}
}

1 Ответ

4 голосов
/ 29 апреля 2019

При расширении модели Laravel User из пакета Auth вы должны расширить класс User из этого пакета.Абстрактный класс из пакета расширяет Модель, и тогда у вас будет доступ ко всем методам модели.

Из Illuminate \ Foundation \ Auth \ User:

class User extends Model implements
   AuthenticatableContract,
   AuthorizableContract,
   CanResetPasswordContract
{
   use Authenticatable, Authorizable, CanResetPassword;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...