Php 强制在序列化过程中使用变体

Php 强制在序列化过程中使用变体,php,mysql,laravel,eloquent,mutators,Php,Mysql,Laravel,Eloquent,Mutators,在序列化数据时,有没有一种方法可以强制eloquent使用变体?我目前正在将我的应用程序转换为使用vue.js,并在模型中计算了几个字段,我需要将这些字段包含在序列化数据中 我理解为什么Taylor不尊重突变子,但有没有办法覆盖这种行为?在返回模型之前,您可以这样做 $model->setAppends(['mutator_1', 'mutator_2']); return $model->toArray(); 如果要在集合上使用它,请执行以下操作: $collection-&g

在序列化数据时,有没有一种方法可以强制eloquent使用变体?我目前正在将我的应用程序转换为使用vue.js,并在模型中计算了几个字段,我需要将这些字段包含在序列化数据中


我理解为什么Taylor不尊重突变子,但有没有办法覆盖这种行为?

在返回模型之前,您可以这样做

$model->setAppends(['mutator_1', 'mutator_2']);
return $model->toArray();
如果要在集合上使用它,请执行以下操作:

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

您可以如下定义应序列化哪些getter:

protected $appends = ['is_admin'];

更多信息:

这是我在laravel 8上的作品:

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

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

您使用的是什么版本的laravel。。。你的意思是访问器(获取变异器)?在现代版本中,序列化输出使用访问器/变异器