这是我的项目表(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);
}
}
基于图像,您的问题似乎不是JSON列,而是icd
列,其结果为null
,而不是您正在传递的值2。确保在Item
型号中列出了icd
数组中的CC_4列。
然后,对于JSON,您使用错误的引号来区分键或字符串。所以尝试:
"mandatory_prop": "{'size': '35mb', 'Speed': '2.86Hz'}"
您甚至可以在JSON对象周围没有""
的情况下尝试。
尝试此
将其添加到您的Item Model
protected $casts = [
'mandatory_prop' => 'json',
];
和 $request->input('mandatory_prop')
必须是 array
您可以使用$request->input('mandatory_prop')
或$request->mandatory_prop