onl*_*mas 1 accessor laravel eloquent laravel-5 laravel-5.5
我有一个模型Review,它具有unix时间戳作为其属性的1个(表格列).
我在这个模型中使用了2个访问器:
public function getReviewDateAttribute($value)
{
return strftime('%A %e %B %Y', $value);
}
public function getReviewDateIsoAttribute()
{
return Carbon::createFromTimestamp($this->review_date)->toDateTimeString();
}
Run Code Online (Sandbox Code Playgroud)
getReviewDateAttribute 按预期工作,并在我编写查询时显示在模型集合中.
但getReviewDateIsoAttribute不是.这可能是什么原因?一个子问题:如果我在两个函数中使用相同的属性,我如何使用原始格式作为输入值?
您应该将它添加到$appends数组中.它不是在寻找所有可用的方法getXXXXXAttribute.使用另一个是因为它是实际属性的访问者,这个属性不是实际属性.
class YourModel ....
{
protected $appends = ['review_date_iso'];
...
}
Run Code Online (Sandbox Code Playgroud)
Laravel 5.5 Docs - Eloquent - 序列化 - 将值附加到JSON
这可能是因为ReviewDateIso不是实际的列,因此不会显示在模型集合中...您可以通过直接调用方法直接访问它
$model->getReviewDateIsoAttribute()
Run Code Online (Sandbox Code Playgroud)
根据文档,访问器是一种在将列返回到查询它的方法之前更改列值的方法。
如果您希望它在您以 Json 形式调用集合时显示,请将其附加到输出中
protected $appends = ['name_of_attribute'];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4984 次 |
| 最近记录: |