Можно ли добавить этот код или что-то подобное в 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
Вы можете использовать что-то вроде:
$table->tinyInteger('id')->unsigned()->autoIncrement();
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, и вы хотите поделиться практическими рекомендациями, я буду оценивать их. Но я не знаю, как настроить 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, а не нулевой первичный ключ.