将“用户”表的名称更改为Laravel 5帐户

时间:2015-11-20 14:02:53

标签: laravel

Laravel相当新,并且想遵循我习惯的表格惯例。

帐户的默认表名是“用户”,我想将其更改为“帐户”。如果有的话,我想将其更改为“user”并删除复数。

我已经使用迁移来制作一个名为“帐户”的克隆用户表,我只想弄清楚我必须对现有代码做些什么才能让它工作登录

看起来我必须以某种方式更新“ app / Http / Auth / AuthController.php ”,但我不会放弃确定它是什么我必须要做的...

我需要:

  • 更新“使用Illuminate \ Foundation \ Auth \ AuthenticatesAndRegistersUsers;”?
  • 将AuthController“ returnUser :: create ”更新为“ returnAccount :: create ”?如果是这样,我需要去创建该类用户的代码中的其他地方吗?

我想另一种选择就是报废他们的AuthController并建立我自己的,只是调用一个新的Account对象......这是我应该采取的路线吗?

2 个答案:

答案 0 :(得分:3)

如果您希望将模型命名为Account,我只会扩展User类并取消某些内容:

编辑Account类中的table属性,请参阅:https://github.com/laravel/laravel/blob/master/app/User.php#L24

Account extends User {
    protected $table = 'accounts';
}

创建类帐户后,编辑配置的身份验证类,请参阅: https://github.com/laravel/laravel/blob/master/config/auth.php#L31

如果您只想否决User使用的表,请编辑User类:

protected $table = 'accounts';
老实说,为什么要这么麻烦?泰勒为你提供了这个框架来启动你的应用程序,为什么不使用它,特别是如果你是Laravel的新手?

答案 1 :(得分:2)

首先,创建帐户迁移 - 复数是广泛接受的

迁移必须包含所有重要字段

<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAccountsTable extends Migration
{

    public function up()
    {
        Schema::create('accounts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
       });
    }

    public function down()
    {
        Schema::drop('accounts');
    }
}

然后创建帐户模型,

<?php namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
class Account extends Model implements AuthenticatableContract,
                                AuthorizableContract,
                                CanResetPasswordContract
{
     use Authenticatable, Authorizable, CanResetPassword;

     protected $table = 'accounts';

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

     protected $hidden = ['password', 'remember_token'];
}

转到config\auth.php并更改此行:  'model' => App\User::class, 至  'model' => App\Account::class,