0

我一直在寻找可以双向格式化字段的 Laravel 转换器。这意味着我在将它返回给客户端时对其进行转换,然后在将其再次保存到数据库之前对其进行转换。

我知道我已经可以使用 Fractal 的 Transformer 来做到这一点,但我正在寻找一种方法(代码或 3rd 方库)来实现自动转换。现在我这样做是为了保存功能:

$data = transform($request->all()); //transforms the input into database field names
$person = Person::create($data);
return response()->json(transform($person), 200); //before returning I transform it to field names needed by client

我使用的是旧数据库,所以我在前端使用的字段与数据库不匹配。它也是一个大应用程序,所以我认为如果有一种方法可以使用Trait模型级别的继承,而不是从控制器、存储库、服务执行上面的代码,那会更好。

4

1 回答 1

0

使用访问器和修改器来获取数据并将其保存到数据库中,同时使用模型上的 $maps 属性来更改前端的字段名称。

class User extends Model
{

    protected $maps = ['name_in_db' => 'name_on_frontend'];
    
    public function getFirstNameAttribute($value)
    {
        return ucfirst($value);
    }

    public function setFirstNameAttribute($value)
    {
        $this->attributes['first_name'] = strtolower($value);
    }
}
于 2022-02-18T06:35:39.967 回答