Laravel,SQL varchar

Laravel,SQL varchar,laravel,sql-server-2012,sql-server-2016,laravel-migrations,Laravel,Sql Server 2012,Sql Server 2016,Laravel Migrations,我正在使用laravel和MS SQL。在迁移(代码attahced)中定义字符串数据类型时,laravel在数据库中创建一个nvarchar数据类型,而不是varchar。在迁移中定义字符串数据类型时,如何限制laravel或SQL Server创建varchar数据类型 下面是迁移代码 public function up() { Schema::create('ie_applicant_type', function (Blueprint $table) { $ta

我正在使用laravel和MS SQL。在迁移(代码attahced)中定义字符串数据类型时,laravel在数据库中创建一个nvarchar数据类型,而不是varchar。在迁移中定义字符串数据类型时,如何限制laravel或SQL Server创建varchar数据类型

下面是迁移代码

public function up()
{
    Schema::create('ie_applicant_type', function (Blueprint $table) {
        $table->increments('applicant_type_id');
        $table->string('applicant_type');
        $table->timestamps();
    });
}
而sqlsrv在config/database中是默认值

'default' => env('DB_CONNECTION', 'sqlsrv')
但在运行迁移时仍然会创建nvarchar数据类型,而不是varchar。附SQL图片


您应该使用字符串,它是:

$table->string('name');

它对您有用。

config/database.php
文件中检查您的数据库类型


默认值是MySQL,但如果您使用的是MS SQL,则数据库中的默认值应该是
'default'=>'sqlsrv',

nvarchar是硬编码的。美妙之处在于,这一切都只是PHP,因此您可以更改它。如果您更喜欢varchar而不是nvarchar,只需在laravel/framework/src/illumb/Database/Schema/Grammars/SqlServerGrammar.php中更改它即可

只要把里面的女巫换成瓦查尔就行了


不幸的是,迁移中没有任何东西可以让您在一列一列的级别上控制它。您必须预先选择将其保留为nvarchar for everything或nvarchar for everything。

sqlsrv在运行迁移时已在配置/数据库中设置为默认值。但您仍然可以看到,正如附件图像所示,迁移创建了一个数据类型为nvarchar而不是varchar。varchar定义了数据类型字符串,但SQL server仍然创建了一个数据类型为nvarchar。随问题附上迁移数据库代码。您是否碰巧找到了解决方案?