41 lines
1.7 KiB
PHP
41 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Phinx\Migration\AbstractMigration;
|
|
|
|
final class CreateSchoolUserTable extends AbstractMigration
|
|
{
|
|
public function up(): void
|
|
{
|
|
$this->table('school_user', [
|
|
'id' => false,
|
|
'primary_key' => ['idschooluser'],
|
|
'engine' => 'InnoDB',
|
|
'collation' => 'utf8mb4_unicode_ci',
|
|
])
|
|
->addColumn('idschooluser', 'integer', ['signed' => false, 'identity' => true])
|
|
->addColumn('user_id', 'integer', ['signed' => false, 'comment' => 'auth_users.id'])
|
|
->addColumn('idschool', 'integer', ['signed' => false])
|
|
->addColumn('school_role', 'string', ['limit' => 20, 'default' => 'student', 'comment' => 'student|teacher|admin|owner'])
|
|
->addColumn('active', 'char', ['limit' => 1, 'default' => 'Y'])
|
|
->addColumn('joined_at', 'timestamp', ['null' => true, 'default' => 'CURRENT_TIMESTAMP'])
|
|
->addIndex(['user_id', 'idschool'], ['unique' => true, 'name' => 'school_user_unique'])
|
|
->addIndex(['idschool'], ['name' => 'school_user_idschool_index'])
|
|
->addForeignKey('user_id', 'auth_users', 'id', ['delete' => 'CASCADE', 'update' => 'NO_ACTION'])
|
|
->addForeignKey('idschool', 'schools', 'idschool', ['delete' => 'CASCADE', 'update' => 'NO_ACTION'])
|
|
->create();
|
|
|
|
// Tutti gli utenti esistenti appartengono a Seregno (1)
|
|
$this->execute("
|
|
INSERT INTO school_user (user_id, idschool, school_role)
|
|
SELECT id, 1, 'student' FROM auth_users
|
|
");
|
|
}
|
|
|
|
public function down(): void
|
|
{
|
|
$this->table('school_user')->drop()->save();
|
|
}
|
|
}
|