TIP: Use Markdown or, <pre> for multi line code blocks / <code> for inline code.
These forums are read-only and for archival purposes only!
Please join our new forums at discourse.kohanaframework.org
ORM не работает с PDO, как исправить ?
  • Здравствуйте... начал изучать кохану и столкнулся с такой проблемой - ORM не дружит с PDO, пишет:

    Kohana_Exception [ 0 ]: Database method list_columns is not supported by Kohana_Database_PDO
    

    И это при том, что без ORM все прекрасно работало

    Скажите, как можно решить эту проблему ?

    Версия Kohana 3.1.4

    Заранее спасибо...

  • Проблема в то, что ети две функции:

    list_tables и: list_columns запрешчени в: modules\database\classes\kohana\database\pdo.php

  • Стоп, то есть вы хотите сказать, что если в каждой модели наследуемой от ORM, прописать свойство:

    $_table_columns
    

    И указать в нем все поля таблицы то все заработает ?

  • По моему да! На всяком случае можна заглянут в: modules\orm\classes\kohana\orm.php

    Здесь вся логика, с исключение Validation!

    Я не пользуюс ORM-мам но по моему все нужно работать если вьи инициализируете $table_columns

    На первой взгляд, проблема будеть если во времени нужно изпользоват reload_columns(TRUE). Тогда будеть използувани именно list_columns через modules\database\classes\kohana\database\pdo.php

    Етот проблем уже несколько раз бьил коментирован в форуме Кохана, но пока нет нормальное решение. Етот проблем возникает для разлики в разньх драйверов для PDO (MySQL, PostgreSQL, SQLLite etc.)

    Частное решение может бьить если вьи работаете только с MySQL, тогда можно сомому переопределит ети две функции в "database" модул.

  • Почему-то на различных ресурсах на проблему

    Kohana_Exception [ 0 ]: Database method list_columns is not supported by Kohana_Database_PDO

    рекомендуют вручную описать столбцы в $_table_columns. Я сделал так:

    1) Переопередлил класс PDO ("modules\database\classes\Kohana\Database\PDO.php")

    2) Скопировал в переопределенный класс PDO методы datatype() и list_columns() из класса MySQL ("modules\database\classes\Kohana\Database\MySQL.php")

    Ошибка исчезла, но там где текст на кириллице - знаки вопросов.

    3) В конфиге database.php для типа PDO добавил строку:

    'options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'),

    Проблема с кириллицей решилась. Всё работает без ошибок.

    Как прокомментируете данное решение?

    Версия Kohana: 3.3.0

  • pumpkin > зачем Вам именно pdo? Вы какую СУБД используете? PDO имеет смысл только если используете какую-то специфическую бд В pdo нет возможности получения списка полей, я вначале делал как вы, потом от него совсем отказался т.к. использую mysql .

  • WinterSilence, PDO имеет смысл использовать может хотя бы потому, что mysql:

    This extension is deprecated as of PHP 5.5.0, and is not recommended for writing new code as it will be removed in the future. Instead, either the mysqli or PDO_MySQL extension should be used.

    http://www.php.net/manual/en/intro.mysql.php

  • pumpkin > да поддержка прекращена, но по словам зомбора в следующей версии коханы mysql будет заменен на mysqli. вообще mysql работает с небольшим кол-вом данных быстрее mysqli, и намного быстрее того же pdo. надо понимать все-таки какую пользу ты получаешь от того или иного инструмента, как говориться старый конь борозды не испортит..

  • Вчера себе сервер новый подготовил со всеми последними версиями шняжками и тоже напоролся на это. Уже хотел прописывать столбцы в моделях, но встретил это расширение модуля БД https://github.com/tomlankhorst/kohana-3.3-mysqli. Большой проект заработал сразу, с ходу проблем не наблюдалось.

  • http://stackoverflow.com/a/19179455 помогло вот это. в варианте от pumpkin ругалось на $column['type']

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion