Не работает метод «вверх» при миграции Codeigniter 3 с PHP8

Я только начал работать с CodeIgniter 3, понимаю, что он уже устарел, но поставлена ​​задача работать с ним. А у меня сразу возникла проблема, перерыл интернет так и не нашел ответа.

Мне кажется, что я просто упускаю небольшую деталь. Помогите, пожалуйста, направить меня на истинный путь.

Миграция:

class Migration_Add_blog extends CI_Migration {

    public function up()
    {
        $this->dbforge->add_field(array(
            'id' => array(
                'type' => 'INT',
                'unsigned' => TRUE,
                'auto_increment' => TRUE
            ),
            'title' => array(
                'type' => 'TEXT',
                'null' => TRUE,
            ),
       ));
        $this->dbforge->add_key('id', TRUE);
        $this->dbforge->create_table('blog');
   }

Миграция.php

public function index()
    {
        $this->load->library('migration');

        if (!$this->migration->version(1))
        {
            show_error($this->migration->error_string());
        }
    }

миграция.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');


$config['migration_enabled'] = TRUE;

$config['migration_type'] = 'sequential';

$config['migration_table'] = 'migrations';


$config['migration_auto_latest'] = FALSE;

$config['migration_version'] = 1;


$config['migration_path'] = APPPATH.'migrations/';

Моя ошибка:

В классе миграции «Migration_Add_blog» отсутствует метод «вверх».

Ваш код кажется правильным. Я бы посмотрел текущий номер миграции и поменял if ($this->migration->current() === FALSE){ show_error($this->migration->error_string()); } не версию, может миграция прошла 1

cssBlaster21895 22.12.2020 10:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
7
1
1 724
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы решить эту проблему, нам пришлось немного углубиться в родительский класс под названием «CI_Migration». У меня php8.0, он некорректно работал с установленным по умолчанию Codeigniter 3.2.0-dev именно строчкой:

elseif ( ! is_callable(array($class, $method)))

в файловой системе/библиотеки/Migration.php

Но в версии 3.1.0 эта строка выглядит так.

elseif ( ! in_array($method, array_map('strtolower', get_class_methods($class))))

И именно этот вариант сработал.

поэтому php 8 был условием :)

cssBlaster21895 22.12.2020 11:55

Такая же ошибка возникает и для PHP 7?

Manish Shahi 12.10.2022 21:20

Другие вопросы по теме