Laravel -显示空参数包的Json对象

qacovj5a  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(126)

我在一个post请求的HTTP正文中发送了这个JSON数据。

{
    "id" : 238,
    "title": "Its a title",
    "description": "Its a description",
    "target_price": 3000,
    "date_of_availability": "16-02-2023",
    "condition": "abc",
    "latitude": "-31.953030",
    "longitude": "115.853600",
    "attributes": {
      "list" : [
        {
         "title" : "Color",
         "value" : "Red"
        },
        {
         "title" : "Frame",
         "value" : "Metal Frame"
        }
       ]
    }
  }

我想将attributes存储在json数据类型字段中。我可以获得控制器中所有其他字段的值,但当我使用dd($request->attributes);时,它显示我的参数包为空。
我怎样才能得到$request->attributes并将其存储在我的mysql的json数据类型字段中。

这是我的迁徙

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id('post_id')->generatedAs();
        $table->string('title');
        $table->text('description');
        $table->integer('target_price')->nullable();
        $table->date('date_of_availability')->nullable();
        $table->string('condition')->nullable();
        $table->decimal('latitude', 11, 8);
        $table->decimal('longitude', 11, 8);
        $table->json('attributes')->nullable();
        $table->timestamps();
    });
}

我在这里拯救

$post = new Post();
$post->title = $data->title;
$post->description = $data->description;
$post->target_price = $data->target_price;
$post->date_of_availability = date("Y-m-d", strtotime($data->date_of_availability));;
$post->condition = $data->condition;
$post->latitude = $data->latitude;
$post->longitude = $data->longitude;
$post->attributes = $data->attributes;
$post->save();

这是我得到的$post->attributes = $data->attributes;行的错误

“留言”:“类Symfony\Component\HttpFoundation\ParameterBag的对象无法转换为字符串”,

owfi6suc

owfi6suc1#

Laravel请求对象使用魔术方法来访问请求体中传递的参数,这仅在Request类没有同名属性时有效。
Illuminate\Http\Request类扩展了Symfony\Component\HttpFoundation\Request类,后者具有一个名为$attributes的显式属性:

/**
 * Custom parameters.
 *
 * @var ParameterBag
 */
public $attributes;

如果你想从请求体中显式地获取一个属性而不使用魔术方法,你可以使用inputjson方法:

$post->attributes = $request->json('attributes');

相关问题