点类型的默认值

时间:2018-09-26 05:15:39

标签: mysql laravel eloquent geospatial

在Laravel迁移中,应该将Point类型列的默认值用作什么?我本来想保留它NULL,但后来我read保留:

  
    

空间索引中的列必须声明为NOT NULL。

  

那我应该使用什么作为我列的默认值,以及如何在迁移中指定它以表示NULL0,0之类的-1,-1

$table->point('location')->default(???);

更新

做更多的研究,我发现了一个更大的问题。 MySQL不允许为POINT类型列指定默认值。因此,我必须在NULL时插入一个INSERT等效项。为此目的正确的值是什么?

2 个答案:

答案 0 :(得分:0)

使用MariaDB,我可以通过以下方式成功插入它:

->默认值(DB :: raw(“ POINT(0,90)”))

答案 1 :(得分:0)

我不知道是不是这种情况,但是如果您尝试在现有表中添加一列,然后在迁移时向其添加空间索引,那么我在MySQL中找到的解决方法是不是一个优雅的解决方案,但是可以工作:

Schema::table('table', function(Blueprint $table)
{
    // Add the new nullable column
    $table->point('column')->nullable();
});
// You must separate this to ensure the execution order
Schema::table('table', function(Blueprint $table)
{
    // Insert the dummy values on the column
    DB::statement("UPDATE `table` SET `column` = POINT(0,90);");
    // Set the column to not null
    DB::statement("ALTER TABLE `table` CHANGE `column` `column` POINT NOT NULL;");

    // Finally add the spatial index
    $table->spatialIndex('column');
});