是否可以将该代码或类似内容添加到 laravel \ Illuminate \ Database \ Schema \ Blueprint 以用于迁移?
public function incrementsTiny($column)
{
return $this->unsignedTinyInteger($column, true);
}
public function incrementsSmall($column)
{
return $this->unsignedSmallInteger($column, true);
}
场景:一些临时表不会增长并且有一些有用的信息,或者只是一个不超过100行的小表,需要一些罕见的更新(添加或只是更改)。但是有可能添加到框架中吗?它通常有很多信息,但有时候某些表没有很多数据。
因为增量只有整数或bigInteger
选项答案 0 :(得分:11)
您可以使用以下内容:
$table->tinyInteger('id')->unsigned()->autoIncrement();
答案 1 :(得分:0)
1º
导航至:laravel / vendor / laravel / framework / src / Illuminate / Database / Schema
打开: Blueprint.php
查找
public function increments($column)
{
return $this->unsignedInteger($column, true);
}
在此之后添加:
/**
* Create a new auto-incrementing tiny integer column on the table.
*
* @param string $column
* @return \Illuminate\Support\Fluent
*/
public function incrementsTinyInteger($column)
{
return $this->unsignedTinyInteger($column, true);
}
/**
* Create a new auto-incrementing small integer column on the table.
*
* @param string $column
* @return \Illuminate\Support\Fluent
*/
public function incrementsSmallInteger($column)
{
return $this->unsignedSmallInteger($column, true);
}
/**
* Create a new auto-incrementing medium integer column on the table.
*
* @param string $column
* @return \Illuminate\Support\Fluent
*/
public function incrementsMediumInteger($column)
{
return $this->unsignedMediumInteger($column, true);
}
查找:
public function unsignedInteger($column, $autoIncrement = false)
{
return $this->integer($column, $autoIncrement, true);
}
在此之后添加:
/**
* Create a new unsigned tiny integer column on the table.
*
* @param string $column
* @param bool $autoIncrement
* @param bool $unsigned
* @return \Illuminate\Support\Fluent
*/
public function unsignedTinyInteger($column, $autoIncrement = false)
{
return $this->tinyInteger($column, $autoIncrement, true);
}
/**
* Create a new unsigned small integer column on the table.
*
* @param string $column
* @param bool $autoIncrement
* @param bool $unsigned
* @return \Illuminate\Support\Fluent
*/
public function unsignedSmallInteger($column, $autoIncrement = false)
{
return $this->smallInteger($column, $autoIncrement, true);
}
/**
* Create a new unsigned medium integer column on the table.
*
* @param string $column
* @param bool $autoIncrement
* @param bool $unsigned
* @return \Illuminate\Support\Fluent
*/
public function unsignedMediumInteger($column, $autoIncrement = false)
{
return $this->mediumInteger($column, $autoIncrement, true);
}
<强>2º强>
导航至:laravel / vendor / laravel / framework / src / Illuminate / Database / Schema / Grammars
打开: MySqlGrammar.php
查找:protected $serials = array('bigInteger', 'integer');
更改为:protected $serials = array('bigInteger', 'integer', 'tinyInteger', 'smallInteger', 'mediumInteger');
<强> 3°强>
加上,在上面的同一个文件中,找到:
protected function typeTinyInteger(Fluent $column)
{
return 'tinyint(1)';
}
更改为:
protected function typeTinyInteger(Fluent $column)
{
return 'tinyint';
}
如果有人知道如何扩展此文件并在laravel中配置使用情况,并希望分享该方法,我会apreciate。但我不知道在扩展这些文件之后如何配置everthing,这就是我知道如何在laravel中执行此操作的方式。
答案 2 :(得分:0)
$table->tinyInteger('id', true, true);
您可以在Illuminate \ Database \ Schema \ Blueprint.php中看到tinyInteger函数定义:
/**
* Create a new tiny integer (1-byte) column on the table.
*
* @param string $column
* @param bool $autoIncrement
* @param bool $unsigned
* @return \Illuminate\Support\Fluent
*/
public function tinyInteger($column, $autoIncrement = false, $unsigned = false)
{
return $this->addColumn('tinyInteger', $column, compact('autoIncrement', 'unsigned'));
}
因此,您只需将第二个和第三个参数设置为 true ,即可获得无符号autoIncrement not null主键。