web-dev-qa-db-fra.com

Comment définir la valeur par défaut d'un attribut sur un modèle Laravel

Comment définir la valeur par défaut d'un attribut sur un modèle Laravel?

Devrais-je définir la valeur par défaut lors de la création d'une migration ou dois-je la définir dans la classe de modèle?

41

Vous pouvez également définir l'attribut Par défaut dans Modèle>

protected $attributes = [
        'status' => self::STATUS_UNCONFIRMED,
        'role_id' => self::ROLE_PUBLISHER,
    ];

Vous pouvez trouver les détails dans ces liens

1.) Comment définir une valeur d'attribut par défaut pour un modèle Laravel/Eloquent?

2.) https://laracasts.com/index.php/discuss/channels/eloquent/eloquent-help-generating-attribute-values-before-creating-record


Vous pouvez également utiliser des accesseurs et des mutateurs pour cela. Vous trouverez les détails dans la Laravel documentation 1.) https : //laravel.com/docs/4.2/eloquent#accessors-and-mutators

2.) https://scotch.io/tutorials/automatically-format-laravel-database-fields-with-accessors-and-mutators

3.) Accesseurs universels et mutateurs dans Laravel 4

62
Manish

Les autres réponses ne fonctionnent pas pour moi - elles peuvent être obsolètes. Voici ce que j'ai utilisé comme solution pour définir automatiquement un attribut:

/**
 * The "booting" method of the model.
 *
 * @return void
 */
protected static function boot()
{
    parent::boot();

    // auto-sets values on creation
    static::creating(function ($query) {
        $query->is_voicemail = $query->is_voicemail ?? true;
    });
}
15
GoogleMac

Vous devez définir les valeurs par défaut dans migrations :

$table->tinyInteger('role')->default(1);
9
Alexey Mezenin