Возможно ли добавить tinyInteger или smallInteger для увеличения на laravel ORM?

Можно ли добавить этот код или что-то подобное в laravel \ Illuminate \ Database \ Schema \ Blueprint для использования с миграциями?

public function incrementsTiny($column) { return $this->unsignedTinyInteger($column, true); } public function incrementsSmall($column) { return $this->unsignedSmallInteger($column, true); } 

сценарий: некоторая временная таблица, которая не растет высокой и имеет некоторую полезную информацию или только небольшую таблицу, которая не имеет более 100 строк и нуждается в некотором редком обновлении (добавьте или просто измените). Но можно добавить в рамки? Его общий, чтобы иметь много информации, но иногда sometables не имеют много данных.

Поскольку для приращений просто есть опция для integer или bigInteger

Solutions Collecting From Web of "Возможно ли добавить tinyInteger или smallInteger для увеличения на laravel ORM?"

Вы можете использовать что-то вроде:

 $table->tinyInteger('id')->unsigned()->autoIncrement(); 

Перейдите к: 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); } 

Перейдите к: laravel / vendor / laravel / framework / src / Illuminate / Database / Schema / Grammars

Открыть: MySqlGrammar.php

Найти: protected $serials = array('bigInteger', 'integer');

Изменить на: protected $serials = array('bigInteger', 'integer', 'tinyInteger', 'smallInteger', 'mediumInteger');

плюс, в том же файле выше, найдите:

 protected function typeTinyInteger(Fluent $column) { return 'tinyint(1)'; } 

Изменить на:

 protected function typeTinyInteger(Fluent $column) { return 'tinyint'; } 

Если кто-то знает, как продлить эти файлы и настроить использование в laravel, и вы хотите поделиться практическими рекомендациями, я буду оценивать их. Но я не знаю, как настроить Everthing после расширения этих файлов, и это то, как я знаю, как это сделать в laravel.

 $table->tinyInteger('id', true, true); 

Вы можете увидеть определение функции tinyInteger в Illuminate \ Database \ Schema \ Blueprint.php:

 /** * 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')); } 

Таким образом, вы просто устанавливаете 2-й и 3-й параметры в true, и вы получаете unsigned autoIncrement, а не нулевой первичный ключ.