在序列化期间强制使用mutators

时间:2017-12-07 09:56:17

标签: php mysql laravel eloquent mutators

在序列化数据时是否有办法强制口才使用mutator?我目前正在将我的应用程序转换为使用vue.js,并且在模型中计算了几个字段,我需要将其包含在序列化数据中。

Eloquent\Model - make toArray() utilize mutators

我理解泰勒为什么不尊重变异者,但是有没有办法改写这种行为?

3 个答案:

答案 0 :(得分:1)

在返回模型之前,您可以执行此操作

$model->setAppends(['mutator_1', 'mutator_2']);
return $model->toArray();

如果你想在集合上使用它:

$collection->each(function($model) { $model->setAppends(...); });

答案 1 :(得分:0)

您可以像这样定义应该被序列化的吸气剂:

protected $appends = ['is_admin'];

更多信息:Appending Values to JSON

答案 2 :(得分:0)

这对我在laravel 8上起作用:

$model->setAppends($model->getMutatedAttributes())->toArray();

所有变异的属性都包含在上面的代码的序列化结果中