📜  laravel 模型列默认值 - PHP (1)

📅  最后修改于: 2023-12-03 15:02:37.642000             🧑  作者: Mango

Laravel 模型列默认值

在 Laravel 中,我们可以通过数据库迁移的方式定义表格结构,在表格结构中定义每一列的默认值。但当我们在创建模型实例的时候,我们可能需要一些列的默认值与表格结构中指定的默认值不同。这时候,我们可以在模型中定义列的默认值。

定义列默认值

在 Laravel 中,我们可以在模型中使用 $attributes 属性定义列的默认值。例如,我们可以定义一个 User 模型,为其 name 列指定一个默认值:

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be set by default values.
     *
     * @var array
     */
    protected $attributes = [
        'name' => 'John Doe',
    ];
}

上面的代码中,我们在 User 模型中定义了一个 $attributes 属性,为其 name 列指定了一个默认值 'John Doe'。当我们创建一个新的 User 模型实例时,如果没有为 name 指定具体的值,它将使用 $attributes 中定义的默认值 'John Doe'

定义多个列默认值

我们可以根据需要定义多个列的默认值。例如,我们可以为一个 Post 模型中的 titlebody 列指定默认值:

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'published_at' => 'datetime',
    ];

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'title', 'body', 'published_at',
    ];

    /**
     * The attributes that should be set by default values.
     *
     * @var array
     */
    protected $attributes = [
        'title' => 'Untitled',
        'body' => '',
    ];
}

上面的代码中,我们在 Post 模型中定义了一个 $attributes 属性,为 title 列指定了一个默认值 'Untitled',为 body 列指定了一个默认值 ''(空字符串)。当我们创建一个新的 Post 模型实例时,如果没有为 titlebody 列指定具体的值,它们将使用 $attributes 中定义的默认值 'Untitled'''

总结

在 Laravel 中,我们可以在模型中使用 $attributes 属性定义列的默认值。这为我们创建模型实例时指定默认值提供了一种非常方便的方式。