【问题标题】:JSON Columns in API Laravel Add not insertAPI Laravel中的JSON列添加不插入
【发布时间】:2020-12-21 19:26:48
【问题描述】:

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

【问题讨论】:

    标签: php mysql laravel api model-view-controller


    【解决方案1】:

    我变了

    投票模型:

    protected $fillable=[
                    'now',
               'paramJson',
                ];
    protected $casts = [
                    'paramJson' => 'array',
                ];
    

    有效

    【讨论】:

      【解决方案2】:

      您的 JSON 编码似乎不正确。试试:

      {
       "now": "did the MJ12 exist?",
       "paramJson" : {
           "key1": "value1", 
           "key2": "value2"
       }
      } 
      

      即在 paramJson 的值上保留双引号。 {"key1": "value1", "key2": "value2"} 不是"{"key1": "value1", "key2": "value2"}"

      【讨论】:

      • SQLSTATE[HY000]:一般错误:1364 字段“paramJson”没有默认值。
      猜你喜欢
      • 1970-01-01
      • 2021-01-16
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多