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

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

[IBM] [Драйвер CLI] CLI0005W Значение параметра изменено

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

Я пытался привести это к varchar, и это работает без красноречия, но моя компания хочет, чтобы это было сделано с помощью eloquent (так как яуже есть 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;
    }

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

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

Контроллер (allRecords)

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

        return $data;
    }

Маршрут:

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

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

1 Ответ

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

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

Model::select(DB::raw('cast(BLOB_COLUMN as varchar(32000))'))
       ->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...