Migrations: fix incoherent registry before applying constraints to avoid errors and adapt ON delete to set NULL for user_id on gradebook_comment and ordering query to avoir error
$this->addSql('UPDATE gradebook_linkeval_log SET user_id_log = NULL WHERE user_id_log = 0');
$this->addSql('ALTER TABLE gradebook_linkeval_log CHANGE user_id_log user_id_log INT DEFAULT NULL');
$this->addSql('ALTER TABLE gradebook_linkeval_log CHANGE user_id_log user_id_log INT DEFAULT NULL');
$this->addSql('UPDATE gradebook_linkeval_log SET user_id_log = NULL WHERE user_id_log = 0 OR user_id_log NOT IN (SELECT id FROM user)');
if (false === $table->hasForeignKey('FK_1F554C7474C99BA2')) {
if (false === $table->hasForeignKey('FK_1F554C7474C99BA2')) {
$this->addSql(
$this->addSql(
@ -373,13 +381,13 @@ class Version20181025064351 extends AbstractMigrationChamilo
$table = $schema->hasTable('gradebook_comment');
$table = $schema->hasTable('gradebook_comment');
if (false === $table) {
if (false === $table) {
$this->addSql('CREATE TABLE gradebook_comment (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, gradebook_id INT DEFAULT NULL, comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_C3B70763A76ED395 (user_id), INDEX IDX_C3B70763AD3ED51C (gradebook_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;');
$this->addSql('CREATE TABLE gradebook_comment (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, gradebook_id INT DEFAULT NULL, comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX IDX_C3B70763A76ED395 (user_id), INDEX IDX_C3B70763AD3ED51C (gradebook_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB ROW_FORMAT = DYNAMIC;');
$this->addSql('ALTER TABLE gradebook_comment ADD CONSTRAINT FK_C3B70763A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;');
$this->addSql('ALTER TABLE gradebook_comment ADD CONSTRAINT FK_C3B70763A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE SET NULL;');
$this->addSql('ALTER TABLE gradebook_score_display CHANGE category_id category_id INT DEFAULT NULL;');
$this->addSql('ALTER TABLE gradebook_score_display CHANGE category_id category_id INT DEFAULT NULL;');
$this->addSql('UPDATE gradebook_score_display SET category_id = NULL WHERE category_id = 0');
$this->addSql('UPDATE gradebook_score_display SET category_id = NULL WHERE category_id = 0 OR category_id NOT IN (SELECT id FROM gradebook_category)');
if (false === $table->hasForeignKey('FK_61F7DC8412469DE2')) {
if (false === $table->hasForeignKey('FK_61F7DC8412469DE2')) {