Laravel 5.2 auth将'id'更改为'customer_id'

问题描述 投票:8回答:3

在本主题中,我问了一个问题:Laravel 5.2 auth change 'users' table

但是现在我的问题已经改变。默认情况下,用户表具有id。但是我想要customer_id,所以我更改了所有内容,但没有用。它一直要求输入id

SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'id'(SQL:从klanten中选择*,其中id = 1个限制1)]

在表klanten中,我有一个customer_id,但它一直要求输入id

我已更改的内容:

config / auth

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
        'table' => 'klanten',
    ],

创建了klanten迁移

public function up()
{
    Schema::create('klanten', function (Blueprint $table) {
        $table->increments('klant_id');
        $table->string('voornaam');
        $table->string('email')->unique();
        $table->string('password', 64);
        $table->rememberToken();
        $table->boolean('status');
        $table->timestamps();
    });
}

如果删除时间戳记,它也会不断询问created_atupdated_at

Controllers / Auth / AuthController

protected function validator(array $data)
{
    return Validator::make($data, [
        'voornaam' => 'required|max:255',
        'email' => 'required|email|max:255|unique:klanten',
        'password' => 'required|confirmed|min:6',
    ]);
}

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

app / User

protected $table = 'klanten';

protected $fillable = [
    'voornaam', 'email', 'password',
];

我希望有人可以帮助我!

laravel authentication laravel-5 laravel-5.2
3个回答
19
投票

编辑用户模型并添加以下内容:

protected $primaryKey = 'customer_id';

3
投票

您可以设置$primaryKey模型中的User字段以指定表的主键:

protected $primaryKey = 'customer_id';

0
投票

对于仍然存在此问题的用户,如果您的主键不遵循autoIncrement,则应将以下代码添加到您的用户模型中:

public $incrementing=false;

并且如果您更改了主列名称,请添加此:

protected $primaryKey = 'vid'; //changed to vid
© www.soinside.com 2019 - 2024. All rights reserved.