在用户提交表单后,Laravel允许一种简单的方法来批量分配模型:
public function newFlightForm(Request $request)
{
Flight::create($request->all());
}
这将在数据库中创建一条新记录。
在我的例子中,我有一个name
字段,它是一个JSON
类型的列。有两个面向用户的输入,名称为name_en
和name_fr
。我通过将输入解析成一个数组来解决这个问题,如下所示:
$request['name'] = [
'en' => $request['name_en'],
'fr' => $request['name_fr'],
];
Flight::create($request->all());
Laravel是否有一个内置的方法,可以将两个输入解析为JSON组合输入?
1条答案
按热度按时间ct2axkht1#
Laravel提供了一种简单的方法,可以在其模型中以原生PHP类型(如数组和JSON)的形式存储数据。使用此功能,您可以在模型上定义$casts属性,并列出应转换为JSON的属性。这样,当您创建或更新模型示例时,Laravel将自动将属性转换为指定的数据类型。
例如,您可以创建一个Flight模型,并将$casts属性设置为JSON,如下所示:
现在,当您创建或更新Flight示例时,name属性将自动转换为JSON。这意味着你可以简单地将name_en和name_fr输入传递给create方法,Laravel将为你处理到JSON的转换。例如:
您还可以为模型中的name属性定义一个自定义赋值器。这样,当您检索name属性时,Laravel将自动解码JSON字符串并返回一个数组。例如:
通过这种方式,您可以轻松地将属性以原生PHP类型(如数组和JSON)的形式存储在模型中。这对于存储需要以某种方式处理的数据(例如语言翻译)特别有用。使用Laravel的casting功能,您可以轻松创建复杂的数据结构并将其存储为JSON。