如何将默认表名称“users”更改为自定义名称

时间:2017-07-21 20:41:00

标签: php laravel laravel-5.4

我想将默认表名users更改为其他名称,例如lara_users

搜索了多个资源,其中许多人说“您需要在config/auth.php文件中更改表名称,如下所示:'table' => 'lara_users'

在Laravel 5.4中,没有明确定义(至少对我来说)'table'键在哪里?我在这里改变了:

...
'providers' => [

    'users' => [
       'driver' => 'database',
       'table' => 'lara_users',
    ],
],
...

虽然在那之后,当我尝试登录时,应用程序会出错:Undefined table: 7 ERROR: relation "users" does not exist(我使用postgresql)。

P.S。

我已将表名更改为lara_users中的migrations,它可以正常运行并创建该表。

3 个答案:

答案 0 :(得分:6)

如果要在所有表名中添加lara_,则可以通过在database.php中添加前缀来添加名称。如果你添加前缀它将添加到所有表,你不需要更改任何其他内容,laravel本身搜索具有此前缀的表。

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => 'lara_',
        'strict' => true,
        'engine' => null,
    ],

请注意,如果您使用DB::table(''),它将与eloquent查询一起使用,然后您需要在所有查询中添加前缀。使用$prefix = \DB::getTablePrefix();作为前缀,使其成为数据库查询的动态。

答案 1 :(得分:2)

行。在用户迁移中将用户更改为lara_users。

现在您更改了默认表名。转到

下的用户模型User.php

app目录,在User class

中添加
 protected $table = 'lara_users';

现在转到RegisterController.php编辑电子邮件密钥:

 'email' => 'required|string|email|max:255|unique:users',

到这个

'email' => 'required|string|email|max:255|unique:lara_users',

那就是它。

答案 2 :(得分:1)

auth.php

中添加此代码
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
        'table' => 'lara_users',
    ],
],

之后运行artisan migrate命令。

如果您的App\Users模式已设置$table变量,请将其更改为

protected $table = 'lara_users';