我想将created_at
日期转换为波斯日期。所以我实现了getCreatedAtAttribute
函数来做到这一点。因为我只想在特殊情况下转换日期,所以我在模型中声明了$convert_dates
属性,默认值为false
。
class Posts extends Model {
public $convert_dates = false;
/**
* Always capitalize the first name when we retrieve it
*/
public function getCreatedAtAttribute($value) {
return $this->convert_dates? convert_date($value): $value;
}
}
$Model = new Posts;
$Model->convert_dates = true;
$post = $Model->first();
echo $post->created_at; // Isn't converted because $convert_dates is false
正如您在上面的代码中看到的那样,似乎模型属性将在mutators中重新初始化,因此$convert_dates
的值始终为false
。
还有其他技巧或解决方案可以解决这个问题吗?
答案 0 :(得分:0)
这样你可以设置构造函数。
public function __construct($value = null, array $attributes = array())
{
$this->convert_dates = $value;
parent::__construct($attributes);
}
现在您可以在mutator中访问此值。
public function getCreatedAtAttribute($value)
{
return $this->convert_dates ? convert_date($value) : $value;
}
或强>
像这样填充受保护的可填充数组:
class DataModel extends Eloquent
{
protected $fillable = array('convert_dates');
}
然后将模型初始化为:
$dataModel = new DataModel(array(
'convert_dates' => true
));