是否可以在laravel(类似于SQL server)中使用包含的列来构建索引



在SQL server中,可以构建包括列的索引,如下所示:

CREATE UNIQUE INDEX ix_cust_email_inc
ON sales.customers(email)
INCLUDE(first_name,last_name);

在Laravel的迁移中有可能做这样的事情吗?

目前,我可以创建这样的索引,正如您所看到的,它没有INCLUDE功能:

$table->index(['email']);

Laravel 8.x的答案是你可以,但不使用任何Laravel工具。您只需要将代码作为原始sqlserver查询运行即可。

代码应该是这样的:

use IlluminateSupportFacadesDB;
use IlluminateDatabaseMigrationsMigration;
class MyMigration extends Migration{
public function up(){
if(config('database.default')=="sqlsrv"){
DB::statement("CREATE INDEX index_name ON table_name (column_name_1,column_name_1) INCLUDE (column_name_3, column_name_4);");
}
}
}

以下是laravel的索引用法https://laravel.com/docs/8.x/migrations#creating-索引,以及执行原始sql代码的方法https://laravel.com/docs/8.x/database#running-查询

最新更新