Поле статуса 'Laravel' не имеет значения по умолчанию, я пробовал ответы в связанных постах безрезультатно - PullRequest
0 голосов
/ 07 июня 2019

Я использовал команду auth для получения страниц входа и регистрации по умолчанию и изменил их, чтобы они соответствовали полям в моей базе данных.но когда я пытаюсь зарегистрироваться, я получаю сообщение об ошибке:

"SQLSTATE [HY000]: общая ошибка: 1364 Поле 'status' не имеет значения по умолчанию (SQL: вставить в users (name), email, password, updated_at, created_at) значения («имя», «электронная почта», «зашифрованный пароль», дата, дата)) «

Я попытался установить его напо умолчанию создать таблицу создания миграции, но проблема по-прежнему сохраняется:

$table->string('status')->default('unapproved');

Это мой контроллер регистра:

<?php

namespace App\Http\Controllers\Auth;

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

class RegisterController extends Controller
{

    use RegistersUsers;

    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest');
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
}

моя таблица миграции:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('status')->default('unapproved');
            $table->boolean('is_active')->default(true);
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

И моя модель пользователя:

<?php

namespace App;

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

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name',
        'email',
        'password',
        'status',
        'is_active',

    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

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

Как я уже упоминал ранее, установив значение по умолчанию, я должен иметь возможность вставить пользователя в таблицу, но я получаю, что «Поле» статуса »не имеетошибка значения по умолчанию ", которая, как я полагаю, может произойти и с is_active, но она завершится неудачно, прежде чем доберется до нее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...