我想将默认表名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
,它可以正常运行并创建该表。
答案 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.phpapp目录,在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';