現在、アプリケーションでlaarvel5.4認証を使用しています。認証ロジックでの役割を保持したままユーザーテーブル名を変更したいので、必要なのは名前を変更することだけです。
Laravelチェンジャーは最新バージョンのAuthファイルとコード構造を変更しているため、auth.phpは実際にはlaravelの以前のバージョンのようには見えません。
私はこれまでに次のことを行ってきましたが、まだ動作していないため、テーブルユーザーが存在しないというエラーが表示されます。
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',
];
}
移行時にテーブル名を変更することができます 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
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',
]);
}