как я могу добавить 2 столбца автоинкремента в одной таблице в базе данных laravel - PullRequest
1 голос
/ 30 сентября 2019

Я хочу знать, могу ли я добавить 2 столбца автоинкремента в одну таблицу в laravel? но второе имеет другое значение, чтобы начать с него?


uniID Я хочу начать с 43600000,

Schema::create('students', function (Blueprint $table){
$table->increments('id');
$table->increments('uniID');
$table->integer('student_id');
$table->timestamps();});
DB::statement("ALTER TABLE students AUTO_INCREMENT = 43600000;");

1 Ответ

0 голосов
/ 01 октября 2019

Laravel не поддерживает это, потому что базы данных обычно не поддерживают это. Типы столбцов increments() и bigIncrements() не могут использоваться несколько раз в одной и той же таблице Schema и не будут созданы при создании:

PDOException: SQLSTATE[HY000]: General error: 1 table "students" has more than one primary key

Но если uniId всегда будет на 43600000 больше, чем id, вы можете использовать вычисляемый атрибут в Eloquent:

class Student
{
    public function getUniIdAttribute()
    {
        return $this->id + 43600000;
    }
}

Затем вы можете использовать это в своих контроллерах или шаблонах Blade:

>>> $user = Student::first()
=> App\Student{#3078
     id: 1,
     ...
   }
>>> $student->uniId
=> 43600001

Недостатком этого подхода является то, что вы выигралиневозможно использовать uniId в качестве внешнего ключа в других таблицах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...