web-dev-qa-db-ja.com

laravel 5.4認証ユーザーのテーブル名の変更

現在、アプリケーションでlaarvel5.4認証を使用しています。認証ロジックでの役割を保持したままユーザーテーブル名を変更したいので、必要なのは名前を変更することだけです。

Laravelチェンジャーは最新バージョンのAuthファイルとコード構造を変更しているため、auth.phpは実際にはlaravelの以前のバージョンのようには見えません。

私はこれまでに次のことを行ってきましたが、まだ動作していないため、テーブルユーザーが存在しないというエラーが表示されます。

  • 1-​​=私はmigrationp()およびdown()を作成およびドロップする機能を変更しました- sersの代わりにstaffテーブルを使用し、移行を正常に実行します。
  • 2-validator()関数をRegisterControllerで変更しました。

  • -すべての'users''staff' in config/auth.phpに変更しました。コードに示されている:

     return [
    
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'staff',
    ],
    
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'staff',
        ],
    
        'api' => [
            'driver' => 'token',
            'provider' => 'staff',
        ],
    ],
    
    'providers' => [
        'staff' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
    
        // 'staff' => [
        //     'driver' => 'database',
        //     'table' => 'staff',
        // ],
    ],
    'passwords' => [
        'staff' => [
            'provider' => 'staff',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],
    

    ];

ただし、app/User.phpでは、以前のバージョンでは値を変更する必要があるtable変数が使用されていたため、何を変更すればよいかわかりませんsers新しいテーブル名に、しかし私のクラスでは私はそのようなものを持っていません

<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
    use Notifiable;
    protected $fillable = [
        'name', 'email', 'password',
    ];
    protected $hidden = [
        'password', 'remember_token',
    ];
}
6
Alladin

移行時にテーブル名を変更することができます file そして、 ser.php モデルでテーブル名変数を変更します。

例:

class Flight extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'my_flights';
}

https://laravel.com/docs/5.4/eloquent#eloquent-model-conventions

15
jeremykenedy

2箇所で変更するだけです

1. app/User.phpの隠し配列の後にこの行を追加します

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

protected $table = 'another_table_name';

2. RegisterControllerで、validatorメソッドのテーブル名を変更します。

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