SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец в люменах

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

SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец "users.id" в "предложении where" (SQL: выберите * из пользователей, где users.id имеет нулевое ограничение 1)

даже если у меня нет базы данных users.id или контроллера

это мой контроллер:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use Auth;

class UserController extends Controller
{
/**
 * Register new user
 *
 * @param $request Request
 */
public function register(Request $request)
{
    $hasher = app()->make('hash');
    $random = strtoupper(md5(microtime(8)));

    $username = $request->input('username');
    $email = $request->input('email');
    $password = $hasher->make($request->input('password'));

    //

    $users = User::all();
    foreach($users as $user){
      if($user->username == $username){
        $res['success'] = false;
        $res['message'] = 'Username Unavailable!';
        return response($res);
      }
      if($user->email == $email){
        $res['success'] = false;
        $res['message'] = 'Email Unavailable!';
        return response($res);
      }
    }

    //

    $register = User::create([
        'user_id' => $random,
        'username'=> $username,
        'email'=> $email,
        'password'=> $password,
    ]);


    if ($register) {
        $res['success'] = true;
        $res['message'] = 'Register Success!';
        return response($res);
    }
    else{
        $res['success'] = false;
        $res['message'] = 'Failed to register!';
        return response($res);
    }
}
}

База данных:

<?php

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

class CreateUsersTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->string('user_id', 8)->primary();
        $table->string('username', 32);
        $table->string('email', 250)->unique();
        $table->string('password');
        $table->string('api_token');
        $table->tinyInteger('state');
        $table->rememberToken();
        $table->timestamps();
        $table->softDeletes();
});
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('users');
}
}

Модель:

namespace App;

use Illuminate\Auth\Authenticatable;
use Laravel\Lumen\Auth\Authorizable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Tymon\JWTAuth\Contracts\JWTSubject;


class User extends Model implements JWTSubject, AuthenticatableContract, 
AuthorizableContract
{
use Authenticatable, Authorizable;

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

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array
 */
protected $hidden = [
    'password'
];

public function getJWTIdentifier()
{
    return $this->getKey();
}

public function getJWTCustomClaims()
{
    return [];
}
}

Может кто-нибудь сказать мне, что сделал не так??

1 ответ

Вместо этого $table->string('user_id', 8)->primary(); попробуйте $table->increments('user_id'); вы пытаетесь первичный ключ, как строка лучше первичной находится в целое число

Другие вопросы по тегам