📅  最后修改于: 2023-12-03 15:02:37.642000             🧑  作者: Mango
在 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
模型中的 title
和 body
列指定默认值:
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
模型实例时,如果没有为 title
和 body
列指定具体的值,它们将使用 $attributes
中定义的默认值 'Untitled'
和 ''
。
在 Laravel 中,我们可以在模型中使用 $attributes
属性定义列的默认值。这为我们创建模型实例时指定默认值提供了一种非常方便的方式。