如何将 Laravel 5.3 设置为使用 VARCHAR 而不是 NVARCHAR 进行 mssql 上的迁移?有没有办法做到这一点?
此问题也适用于 DATETIME 上的 SMALLDATETIME。
如何将 Laravel 5.3 设置为使用 VARCHAR 而不是 NVARCHAR 进行 mssql 上的迁移?有没有办法做到这一点?
此问题也适用于 DATETIME 上的 SMALLDATETIME。
我创建了一个包,可以让您进行自定义迁移,而无需自己扩展所有内容。
https://github.com/shiftonelabs/laravel-nomad
安装包后,您只需更改迁移以使用新passthru
方法,并且可以为您的字段提供所需的定义。
// pass definition as third parameter
$table->passthru('string', 'username', 'varchar(60)');
$table->passthru('datetime', 'expires_at', 'smalldatetime');
// or use fluent definition method
$table->passthru('string', 'username')->definition('varchar(60)');
$table->passthru('datetime', 'expires_at')->definition('smalldatetime');
// if there is no defintion, it defaults to the first parameter
$table->passthru('smalldatetime', 'expires_at');
这是可行的,但您可能必须自己创建一个新的数据库驱动程序,这涉及创建
DatabaseManager
Connection
ConnectionFactory
Schema Builder
Schema Grammar
...
好的部分是你可能可以从 Laravel 扩展所有这些人并且只更改语法类:
/**
* Create the column definition for a string type.
*
* @param \Illuminate\Support\Fluent $column
* @return string
*/
protected function typeString(Fluent $column)
{
return 'NVARCHAR ('.$column->length.')';
}
这个包中的一个例子:
https://github.com/jacquestvanzuydam/laravel-firebird/tree/5.3-support/src/Firebird