web-dev-qa-db-fra.com

laravel 5.4 changer le nom de la table des utilisateurs d'authentification

J'utilise actuellement l'authentification laarvel5.4 dans mon application; et je veux changer le nom de la table des utilisateurs tout en gardant son rôle tel qu'il est dans la logique d'authentification, tout ce dont j'ai besoin est simplement de changer le nom.

Il semble que Laravel changer le fichier Auth et la structure de code dans la dernière version, donc auth.php ne ressemble pas vraiment aux versions précédentes de laravel.

J'ai fait ce qui suit jusqu'à présent, mais cela ne fonctionne toujours pas gy me donnant une erreur disant que les utilisateurs de la table n'existent pas:

  • 1 - J'ai changé les fonctions migrationp () et down () pour créer et supprimer - staff table au lieu de sers et exécutez la migration avec succès.
  • 2 - J'ai changé la fonction validator () dans RegisterController.

  • - J'ai changé tous les 'utilisateurs' en 'staff' dans config/auth.php, as montré dans le code:

     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,
        ],
    ],
    

    ];

Cependant, dans app/User.php je ne sais pas quoi changer car dans les versions précédentes, il y avait auparavant une variable table dont vous devez changer la valeur tilisateurs au nouveau nom de la table mais dans ma classe je n'ai pas une telle chose

<?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

Vous pouvez modifier le nom de la table dans la migration fichier , puis modifier la variable de nom de table dans le modèle ser.php .

Exemple:

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

Vous avez juste besoin de changer à deux endroits

1. ajoutez cette ligne après le tableau caché de app/User.php

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

protected $table = 'another_table_name';

Dans le RegisterController, modifiez le nom de la table dans la méthode de validation:

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