我试图在从数据库获取字段时设置字段,但相应的访问器不工作。它根本不执行。
代码如下:
迁移:
public function up(){
Schema::table('users',function(Blueprint $table){
$table->time('start_working_time')->nullable();
});
}
字符串
型号:
protected $fillable = [...,'start_working_time'];
protected $casts = [
'start_working_time' => 'datetime:H:i',
];
protected $appends = ['start_working_time'];
public function getStartWorkingTimeAttribute($date){
return Carbon::createFromFormat('H:i:s',$date)->format('H:i');
}
型
我尝试过的:
1.创建迁移时将该字段设置为非空。
1.用一个下划线缩短字段名称(start_time)
1.通过“$cast”而不是使用访问器来执行
1.把它放在“$append”中
但这些方法都不管用。
有什么想法吗?
1条答案
按热度按时间xt0899hw1#
$appends
属性用于将新的计算属性附加到模型的数组/ JSON表单,而不是现有的列。由于start_working_time
是数据库中的实际列,因此不应将其列在$appends
中。请从$appends
数组中删除start_working_time
。1.如果你将
start_working_time
转换为日期时间,Laravel已经将其作为Carbon示例返回。因此,在你的访问器中,你不需要创建另一个Carbon示例。你可以简单地格式化它:字符串