Не удается вставить значения Json в столбец json моей таблицы через postman

#json #laravel #postman

#json #laravel #postman

Вопрос:

Вот моя таблица элементов (перенос в 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();
        });
  

Вот ошибка :
ссылка на изображение сообщения об ошибке в postman

Маршрут:

    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);
       }
  }
  

Комментарии:

1. Можете ли вы привести здесь код вашего контроллера?

2. Да, я опубликовал приведенный выше код

Ответ №1:

Судя по изображению, ваша проблема, похоже, не в столбце json, а в icd столбце, который оказывается null вместо передаваемого вами значения 2. Убедитесь, что в вашей Item модели вы указали icd столбец в вашем fillable массиве.

И затем для JSON вы используете неправильные кавычки, чтобы отличить ключ или строку. Так что попробуйте:

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

Вы даже можете попробовать без "" вокруг объекта json.

Ответ №2:

Попробуйте это

Добавьте это в свой Item Model

 protected $casts = [
     'mandatory_prop' => 'json',
];
  

И $request->input('mandatory_prop') это должен быть массив

вы можете использовать $request->input('mandatory_prop') или $request->mandatory_prop