Laravel 5.6 PostGres Json默认为null

时间:2018-02-14 19:04:48

标签: php laravel postgresql

我需要一次只插入1个JSON数组,因此如果没有条目,则需要JSON数组为默认值null。有没有办法可以做到这一点?

使用以下方法:https://github.com/laravel/framework/issues/16107

我的迁移是

Schema::create('job_details', function (Blueprint $table) {
    $table->integer('id')->default('0');
    $table->primary('id');
    $table->foreign('id')->references('id')->on('job_searches');
    $table->json('Location_of_job');
    $table->json('API_URL'); 
    $table->json('Redirected_URL'); 
    $table->json('Description'); 
    $table->json('Salary',6,2); 
    $table->timestamps();
});

型号:

protected $primaryKey = 'id';
public $timestamps = true;

protected $fillable = ['API_URL', 'Redirected_URL','Location_of_job','Description','Salary',];

protected $casts = [
    'Location_of_job' => 'array',
    'API_URL' => 'array',
    'Redirected_URL' => 'array',
    'Description' => 'array',
    'Salary' => 'array'
];
protected $attributes = array(
    'json' => '{}'
);

获取错误:

  

SQLSTATE [23502]:非空违规:7错误:列中的空值   " Location_of_job"违反非空约束细节:失败的行   contains(0,null,null,null,null,null,null,null)。 (SQL:插入   进入" job_details" (" API_URL")values(),(),(),(),(),(),(),(),   (),(),(),(),(),(),(),(),(),(),(),())

1 个答案:

答案 0 :(得分:2)

来自the docs

  

要使列"可以为空",您可以使用$table->json('Location_of_job')->nullable(); $table->json('API_URL')->nullable(); $table->json('Redirected_URL')->nullable(); $table->json('Description')->nullable(); $table->json('Salary', 6, 2)->nullable(); 方法

PIXI.Container