db->getSchema()->getTableSchema('rescue_animal_medical_visit', true); if ($medicalTable !== null) { if (!isset($medicalTable->columns['post_to_space_feed'])) { $this->addColumn('rescue_animal_medical_visit', 'post_to_space_feed', $this->boolean()->notNull()->defaultValue(0)); } if (!isset($medicalTable->columns['post_to_animal_feed'])) { $this->addColumn('rescue_animal_medical_visit', 'post_to_animal_feed', $this->boolean()->notNull()->defaultValue(1)); } $this->update('rescue_animal_medical_visit', ['post_to_space_feed' => 0], ['post_to_space_feed' => null]); $this->update('rescue_animal_medical_visit', ['post_to_animal_feed' => 1], ['post_to_animal_feed' => null]); } if ($this->db->getSchema()->getTableSchema('rescue_animal_stream_entry', true) === null) { $this->safeCreateTable('rescue_animal_stream_entry', [ 'id' => $this->primaryKey(), 'animal_id' => $this->integer()->notNull(), 'entry_type' => $this->string(32)->notNull(), 'medical_visit_id' => $this->integer()->null(), 'progress_update_id' => $this->integer()->null(), 'created_at' => $this->dateTime()->null(), 'updated_at' => $this->dateTime()->null(), ]); $this->safeCreateIndex('idx_rescue_animal_stream_entry_animal', 'rescue_animal_stream_entry', 'animal_id', false); $this->safeCreateIndex('idx_rescue_animal_stream_entry_type', 'rescue_animal_stream_entry', 'entry_type', false); $this->safeCreateIndex('idx_rescue_animal_stream_entry_medical', 'rescue_animal_stream_entry', 'medical_visit_id', true); $this->safeCreateIndex('idx_rescue_animal_stream_entry_progress', 'rescue_animal_stream_entry', 'progress_update_id', true); $this->safeAddForeignKey( 'fk_rescue_animal_stream_entry_animal', 'rescue_animal_stream_entry', 'animal_id', 'rescue_animal', 'id', 'CASCADE', 'CASCADE' ); $medicalVisitTable = $this->db->getSchema()->getTableSchema('rescue_animal_medical_visit', true); if ($medicalVisitTable !== null) { $this->safeAddForeignKey( 'fk_rescue_animal_stream_entry_medical', 'rescue_animal_stream_entry', 'medical_visit_id', 'rescue_animal_medical_visit', 'id', 'CASCADE', 'CASCADE' ); } $progressTable = $this->db->getSchema()->getTableSchema('rescue_animal_progress_update', true); if ($progressTable !== null) { $this->safeAddForeignKey( 'fk_rescue_animal_stream_entry_progress', 'rescue_animal_stream_entry', 'progress_update_id', 'rescue_animal_progress_update', 'id', 'CASCADE', 'CASCADE' ); } } } public function safeDown() { if ($this->db->getSchema()->getTableSchema('rescue_animal_stream_entry', true) !== null) { $this->safeDropTable('rescue_animal_stream_entry'); } $medicalTable = $this->db->getSchema()->getTableSchema('rescue_animal_medical_visit', true); if ($medicalTable !== null) { if (isset($medicalTable->columns['post_to_space_feed'])) { $this->dropColumn('rescue_animal_medical_visit', 'post_to_space_feed'); } if (isset($medicalTable->columns['post_to_animal_feed'])) { $this->dropColumn('rescue_animal_medical_visit', 'post_to_animal_feed'); } } } }