Не удалось вставить значения Json в столбец json моей таблицы через почтальона - PullRequest
0 голосов
/ 21 марта 2019

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

Ответы [ 2 ]

1 голос
/ 21 марта 2019

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

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

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

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

0 голосов
/ 21 марта 2019

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

Добавьте это в ваш Item Model

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...