首页 > 解决方案 > 无法通过邮递员将 Json 值插入到我的表的 json 列中

问题描述

这是我的项目表(laravel 迁移):

Schema::connection('mysql')->create('item', function (Blueprint $table) {
            $table->increments('id')->unsignedInteger();
            $table->unsignedInteger('icd');
            $table->unsignedInteger('itypeid');
            $table->json('mandatory_prop');
            $table->unsignedInteger('parentId')->nullable();
            $table->foreign('icd')->references('id')->on('itemClass')->onDelete('cascade')->onUpdate('cascade');
            $table->foreign('itypeid')->references('id')->on('itemType')->onDelete('cascade')->onUpdate('cascade');
            $table->foreign('parentId')->references('id')->on('item')->onDelete('cascade')->onUpdate('cascade');
            $table->timestamps();
        });

这是错误: 链接到邮递员中的错误消息图片

路线:

   Route::post('item','ItemController@store');

控制器:

public function store(Request $request)
  {
    //input a new role
    $item = $request->isMethod('put') ? Item::findOrFail($request->item_id) : new Item;
    $item->id = $request->input('item_id');
    $item->icd = $request->input('icd');
    $item->itypeId = $request->input('itypeId');
    $item->mandatory_prop = $request->input('mandatory_prop');
    $item->parentId = $request->input('parentId');

     if($item->save()) {
       return new itemResource($item);
       }
  }

标签: jsonlaravelpostman

解决方案


根据图像,您的问题似乎不是 json 列,而是该icd列而null不是您传递的值 2 。确保在您的Item模型中,您已icd在数组中列出该列fillable

然后对于 JSON,您使用错误的引号来区分键或字符串。所以试试:

"mandatory_prop": "{'size': '35mb', 'Speed': '2.86Hz'}"

您甚至可以尝试不使用""json 对象。


推荐阅读