Laravel $request->validated() 用于在请求主体中具有对象数据类型的数据

Laravel $request->validated() for data that has object datatype inside the request body

我已经使用 $request->validated() 来验证仅由普通键值对组成的请求主体,但是如果请求主体中包含对象怎么办?

示例:

// this works just fine
{
    "key1": "value1",
    "key2": "value2"
}

$request->validated()的return将只针对key1和key2,但是当涉及到body时是这样的:

{
    "key1": "value1",
    "object1": {
        "key2.1": "value2.2"
        "key2.2": "value2.2"
     }
}

当我尝试创建 object1 记录时使用:

object1::create($request->validated())

它抛出了一个错误,因为 $request->validated() 只验证任何正常的键值数据,并没有深入到对象的 属性。对此有什么想法吗?提前致谢。

试试这个:

$request->validate([

    'object1.*.key2.1' => 'required',
    'object1.*.key2.2' => 'required'

]);

'object1.*.key2.1' => 'required',object1是key,*是index

事实证明,您可以使用 request->validated()["object"] 在请求正文中获取经过验证的对象,因此您不再需要验证该对象中的每个键。