在Laravel 5.4中,可以使用Eloquent模型的$fillable
属性来定义可以批量赋值的字段,但是这只适用于数据库中已经存在的字段。如果想要保存模型中的自定义属性,可以使用Laravel提供的setAttribute
方法。
下面是一个示例代码,演示如何使用不在数据库中的自定义属性保存模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class CustomModel extends Model
{
protected $fillable = ['column1', 'column2'];
protected $appends = ['customAttribute'];
public function getCustomAttribute()
{
// 自定义属性的逻辑处理
return 'custom value';
}
public function setCustomAttribute($value)
{
// 自定义属性的设置逻辑
// 可以在这里进行一些处理或验证
$this->attributes['customAttribute'] = $value;
}
}
在上面的示例中,CustomModel
继承自Model
类,并定义了$fillable
属性来指定可以批量赋值的字段。此外,还定义了$appends
属性来指定要追加到模型数组表现形式中的自定义属性。
在CustomModel
中,我们定义了一个名为customAttribute
的自定义属性,并实现了getCustomAttribute
和setCustomAttribute
方法来处理该属性的获取和设置逻辑。在getCustomAttribute
方法中,可以编写自定义的逻辑来计算或获取属性的值。在setCustomAttribute
方法中,可以进行一些处理或验证,并将属性的值保存到模型的attributes
数组中。
使用示例代码中的CustomModel
,可以通过以下方式保存自定义属性:
$model = new CustomModel;
$model->column1 = 'value1';
$model->column2 = 'value2';
$model->customAttribute = 'custom value';
$model->save();
在上述代码中,我们可以看到customAttribute
属性并不在$fillable
属性中,但是仍然可以通过$model->customAttribute = 'custom value'
来设置自定义属性的值,并且可以通过$model->save()
方法将模型保存到数据库中。
需要注意的是,自定义属性在模型的attributes
数组中,并不会被自动保存到数据库中。如果需要将自定义属性保存到数据库中,可以在模型的save
方法之前手动将自定义属性添加到$fillable
属性中,或者使用$model->setAttribute('customAttribute', 'custom value')
方法来设置自定义属性的值。
希望这个答案能够帮助到您!如果您对Laravel 5.4或其他云计算相关问题有更多疑问,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云