Невозможно выполнять какие-либо запросы к столбцам BLOB и CLOB (DB2/PHP/Laravel/Eloquent)

В настоящее время я работаю над простым приложением CRUD для работы и столкнулся с проблемой с BLOB и CLOB. Я не могу выполнять какие-либо запросы с любым столбцом этого типа. Мне также не разрешено отбрасывать или изменять их. Ошибка, которую я получаю, это ошибка SQL:

[IBM][CLI Driver] CLI0005W Option value changed

. Насколько я понимаю, я получаю эту ошибку, потому что драйвер не понимает, что такое блоб.

Я попытался преобразовать это в varchar, и он работает без красноречия, но моя компания хочет, чтобы это было сделано с использованием красноречия (поскольку у меня уже есть CRUD API, отлично работающий с MySQL, но он не содержит BLOB или CLOB).

Этот подход отлично работает:

$conn = odbc_connect('example','username','password');
        $query = "SELECT cast(BLOB_COLUMN as varchar(32000)) FROM TABLE fetch first 1 row only";
        $stmt = odbc_prepare($conn , $query);
        odbc_execute($stmt);

        while($driver = odbc_fetch_array($stmt)){

            $drivers[] = $driver;

        }
            return $drivers;
    }

Но я не могу реализовать что-то подобное с красноречием. Я пробовал литье так: Модель

protected $casts = [
        'BLOB_COLUMN' => 'string',
        'CLOB_COLUMN' => 'string',
    ];

Контроллер (все записи)

public function allRecords() {
        $data = Model::all();

        return $data;
    }

Маршрут:

Route::get('model', 'ModelController@allRecords');

Любая помощь будет принята с благодарностью. Примечание: я надеюсь, что объяснил это достаточно подробно, так как я программировал чуть меньше года в колледже и начал PHP/Laravel менее месяца назад.

Драйвер ibm_db2 действительно понимает, что такое LOB, у него есть специальный метод для чтения данных LOB, но похоже, что ваша структура ORM не оборудована для его использования.

mustaccio 24.05.2019 12:56
Стоит ли изучать 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 и хотите разрабатывать...
0
1
693
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете просто использовать свой sql-запрос в laravel

Model::select(DB::raw('cast(BLOB_COLUMN as varchar(32000))'))
       ->first();

Кажется, он возвращает ложные значения вместо ошибки, с которой я мог бы работать. Новая функция: php public function allRecords() { $data = Model::select(DB::raw('CAST(BLOBCOLUMN AS varchar(32000)) + CAST(CLOBCOLUMN AS varchar(32000))'))->get(); return $data; } Новый вывод: php [{"1":null},{"1":null},{"1":null}]

cgaudet 24.05.2019 12:56

Поцарапайте это, кажется, это работает так, как задумано! Я просто не правильно понял на первый взгляд. Большое спасибо ! Теперь время поработать над этим :)

cgaudet 24.05.2019 14:52

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