Неизвестный столбец 'uuid' в 'списке полей' в laravel - PullRequest
1 голос
/ 26 апреля 2020

я пытаюсь создать столбец "уникальный" , заполненный UUID, в моей таблице "users" , я не хочу, чтобы он был основным и при попытке зарегистрировать пользователя я сталкиваюсь с этой ошибкой "Неизвестный столбец 'uuid' в 'списке полей'" Я создал новый laravel проект и только что использовал "Auth" команду для него Если у вас есть какой-либо другой способ выполнить это, пожалуйста, поделитесь, я просто хочу уникальный код от 5 до 8 символов для моего пользователя

Вот миграция моих пользователей: -

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->uuid('unique');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

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

<?php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Webpatser\Uuid\Uuid;
use App\Models\Concerns\UsesUuid;
use Illuminate\Support\Str;

class User extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */

     protected $guarded = []; // YOLO



  public $incrementing = false;


   protected $keyType = 'string';

   protected static function boot()
   {
     parent::boot();
  self::creating(function ($user) {
      $user->uuid = (string) Uuid::generate(4);
  });
   }


    protected $fillable = [
        'name', 'email', 'password', 'uuid',
    ];

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

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];


}

Вот изображение моей базы данных: - enter image description here

это мой первый раз, когда я использую UUID, поэтому я выполнил все уроки, как я новичок в laravel, а также программировал, я не знаю, в чем суть проблемы Пожалуйста, помогите

-Спасибо

1 Ответ

1 голос
/ 26 апреля 2020

Ваш скрипт миграции создает столбец unique, а не uuid, поэтому вы получаете column uuid not not found. (см. второй столбец вашего снимка экрана phpmyadmin)

измените значение $table->uuid('unique'); на $table->uuid('uuid')->unique();, которое может создать столбец для uuid.

...