php - API Laravel 中的 JSON 列添加而不是插入

标签 php mysql laravel api model-view-controller

当我通过 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/

相关文章:

php - Laravel request->input ('' ) or old ('' ) 总是在 blade 中返回 1

php - Laravel 4 - 读取配置文件

php - 如何在php中查看类redis的功能

mysql - 当不是输入值时,在前端更新后保存更新的表值,Laravel

php - 如何提高 MySQL 的速度,例如通配符 '%search%' 或备用数据库

mysql - MySQL 中的 DATE_FORMAT 与 LIKE 性能比较

php - Laravel:检查 Controller 上的数据是否为整数

php - 这个Mysql PDO执行有什么问题导致不执行?

php - PDO 一次插入 4 次

php - 将参数从 php 传递到 casperjs/phantomjs