当我通过 POST 执行“添加”时,未插入 json。我想通过 api/polls 在“paramJson”列中插入 json。但这给我带来了问题
我有以下字段:
public function up()
{
Schema::create('polls', function (Blueprint $table) {
$table->id();
$table->text('now');
$table->json('paramJson');
$table->enum('status', ['a', 'b', 'c','d'])->default('a');
});
}
民意调查模型:
protected $fillable=[
'now',
];
protected $casts = [
'paramJson' => 'array',
];
PollsController.php
public function add(Request $request)
{
$poll = Poll::create($request->all());
return response()->json($poll, 201);
}
路由API
Route::post('polls','PollsController@add');
我调用邮政电话http://127.0.0.1:8000/api/polls 。我发送 json 的位置如下:
{
"now": "did the MJ12 exist?",
"paramJson" : "{"key1": "value1", "key2": "value2"}"
}
给出以下错误:SQLSTATE[HY000]:一般错误:1364
如果我插入它,它就会接受它:
{
"now": "did the MJ12 exist?",
"paramJson" : "{\"key1\": \"value1\", \"key2\": \"value2\"}"
}
SQLSTATE[HY000]:一般错误:1364 字段“paramJson”
如果我从数据库插入它,我会看到这样的
INSERT INTO polls (now, paramJson) values ("did the MJ12 exist?", '{"key1": "value1", "key2": "value2"}')
"paramJson":"{\"key1\": \"value1\", \"key2\": \"value2\"}",
在laravel中不能像这样插入json吗?
最佳答案
您的 JSON 编码似乎不正确。尝试:
{
"now": "did the MJ12 exist?",
"paramJson" : {
"key1": "value1",
"key2": "value2"
}
}
即,将 paramJson 的值保留双引号。 {"key1": "value1", "key2": "value2"}
不是 "{"key1": "value1", "key2": "value2"}"
关于php - API Laravel 中的 JSON 列添加而不是插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63708706/