Ошибка Codeigniter после обновления: неопределенное свойство: CI_DB_mysqli_driver :: $ ar_orderby - PullRequest
0 голосов
/ 21 мая 2019

Я обновил Codeigniter с 2.1 до 2.2, затем на 3, и теперь, когда я его запускаю, я получаю эту ошибку

Undefined property: CI_DB_mysqli_driver::$ar_orderby system\core\Model.php 73

Вот код в My_Model.php :

if(!count($this->db->ar_orderby)){
   $this->db->order_by($this->order_by);
}

Я проверил этот вопрос и проверил его ответ, заменив вышеуказанный код на этот

if(!count($this->db->order_by($this->_order_by))) {
  $this->db->order_by($this->_order_by);
}

Но я получаю эту ошибку

Undefined property: Home::$_order_by system\core\Model.php 73

Я также попробовал это

if (!count($this->db->ar_orderby)) {
    $this->db->order_by($this->orders);
}

Но я получаю:

Message: Undefined property: CI_DB_mysqli_driver::$ar_orderby
Filename: core/MY_Model.php
Line Number: 59

Message: Undefined property: Home::$orders
Filename: core/Model.php
Line Number: 73

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 21 мая 2019

Это изменение имен свойств, которое вызывает проблему.Начиная с версии V3, Active Record (AR) был изменен на Query Builder (QB).Наряду с этим изменением префикс свойств класса изменился с «ar_» на «qb _».

К сожалению, свойство AR $ar_orderby было общедоступным, и версия QB этого же свойства - $qb_orderby - защищенапоэтому к нему нельзя получить доступ из MY_Model.

Я не знаю, что существует простой способ успешного расширения CI_DB_query_builder благодаря способу, который использовался для создания класса CI_DB.(См. Строку # 182 в /system/database/DB.php) Но для того, чтобы if(!count($this->db->qb_orderby)){ работал, необходимо добавить функцию "getter" для получения значения $qb_orderby.Получатель может быть добавлен только путем расширения или взлома базового класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...