Laravel 5

Comment ajouter une colonne de type VACHAR null et lui attribuer une Valeur par Défaut dans ma Migration users ?

  • Avatar de Marc-AurèleChegnimonhanAYAOVI
    Membre depuis :
    06/05/2019
    Messages :
    1

    Bonjour.

    J'ai deux gros problème et j'espère trouver de l'aide auprès de vous:

    1 - En fait, j'ai installé le Composant VOYAGER qui gère la partie Backend de Laravel. Mais depuis, quand j'essaie de faire un php artisan migrate:refresh, je reçois une erreur du genre:

    Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1 no such table: users (SQL: alter table "users" add column "avatar" varchar null default 'users/default.png')

    Je comprends à travers cette erreur qu'on me demande d'Ajouter dans ma Table "users", une colonne "avatar", de type VACHAR null avec pour valeur par défaut 'users/default.png'.

    Alors, je voulais savoir comment ajouter une nouvelle une colonne "avatar", de type VACHAR null avec pour valeur par défaut 'users/default.png' ???

    Que dois-ajouter à dans ma Migration "users": $table->.......... ???

    2 - Ma 2ème PRÉOCCUPATION:

    Comment enlever une exigence (toujours avec Eloquent dans ma Migration) à une colonne ou à un champ de sorte à ce que quand la Table est remplie à travers le formulaire HTML (methode create() de Laravel par exemple), cela ne cause pas une erreur SQL du genre: "Le champ numero de telephone n'est pas remplie".

    Je sais que j'aurais pu créer tout simplement un nouveau Model et le lier au Model par défaut de Laravel (users) pour m'épargner tout ça mais c'est pour des raisons personnelles que je veux forcément ajouter d'autre colonne à ma Table "users" pour une utilisation future. Actuellement dans ma Migration.

    Alors, je voulais savoir quelle méthode Eloquent peut puis-je ajouter à $table->string('phonenumber')->....???...; pour que cette colonne phonenumber ne soit pas obligatoirement remplie et SURTOUT ne cause pas une ERREUR SQL dans ma vue ???

    MERCI DE M'AIDER SUR CES DEUX (2) ci-dessus.
    Je précise que c'est deux points (problèmes différents) concernant Eloquents.

  • Avatar de CedricMeschin
    Membre depuis :
    04/02/2018
    Messages :
    21

    Bonsoir,

    pour la première question, normalement en ajoutant simplement ->default('TaValeur') sur le champ concerné, cela devrait fonctionner.
    C'est ce que je fais dans ma table user pour définir un profil par défaut.
    $table->enum('role', ['user', 'admin'])->default('user');
    Le type dans mon cas est 'enum' mais cela doit également fonctionner avec le type 'string'.

    Pour la seconde question, il me semble que c'est ->nullable() qui convient.

    cordialement

Vous ne pouvez pas répondre à ce sujet.