safeCreateTable('rescue_animal_transfer_event', [ 'id' => $this->primaryKey(), 'transfer_id' => $this->integer()->notNull(), 'animal_id' => $this->integer()->notNull(), 'event_type' => $this->string(32)->notNull(), 'from_status' => $this->string(32)->null(), 'to_status' => $this->string(32)->null(), 'message' => $this->text()->null(), 'metadata_json' => $this->text()->null(), 'created_by' => $this->integer()->null(), 'created_at' => $this->dateTime()->null(), ]); $this->safeCreateIndex('idx_rescue_transfer_event_transfer', 'rescue_animal_transfer_event', 'transfer_id', false); $this->safeCreateIndex('idx_rescue_transfer_event_animal', 'rescue_animal_transfer_event', 'animal_id', false); $this->safeCreateIndex('idx_rescue_transfer_event_type', 'rescue_animal_transfer_event', 'event_type', false); $this->safeCreateIndex('idx_rescue_transfer_event_created_at', 'rescue_animal_transfer_event', 'created_at', false); $this->safeAddForeignKey( 'fk_rescue_transfer_event_transfer', 'rescue_animal_transfer_event', 'transfer_id', 'rescue_animal_transfer', 'id', 'CASCADE', 'CASCADE' ); $this->safeAddForeignKey( 'fk_rescue_transfer_event_animal', 'rescue_animal_transfer_event', 'animal_id', 'rescue_animal', 'id', 'CASCADE', 'CASCADE' ); if ($this->db->getSchema()->getTableSchema('user', true) !== null) { $this->safeAddForeignKey( 'fk_rescue_transfer_event_created_by', 'rescue_animal_transfer_event', 'created_by', 'user', 'id', 'SET NULL', 'CASCADE' ); } } public function safeDown() { $this->safeDropTable('rescue_animal_transfer_event'); } }