Проблемы вставки в столбцы Sybase int с использованием Laravel 5.1

У меня проблемы с вставкой значений в таблицы с целочисленными столбцами типов данных с использованием Laravel 5.1 и Sybase.

Ошибка 257 отображается в виде исключения. В документах Sybases кажется, что это проблема конверсии. Я вижу, что вставка sql встроена в фреймворк

insert into [table_name] ([col1], [col2]) values ('AAA', '999'))

Итак, я вижу, что Laravel передает все значения в одинарные кавычки, и мне кажется, что Sybase не принимает такую ​​конструкцию.

Я использую Linux Ubuntu с freetds, установленной с версией протокола 5.0.

Кто-то уже решил эту проблему? Мне не хватает какой-либо конфигурации или мне нужно написать расширение драйвера для работы Sybase с Laravel 5.1?

1

Решение

Предполагая, что вы используете Sybase ASE, проблема связана с базой данных, и она унаследована от PHP PDO, в результате чего по умолчанию она связывает все параметры в виде строки, если вы не укажете тип данных для привязки с помощью функции bindValue ().

<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindValue(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':colour', $colour, PDO::PARAM_STR);
$sth->execute();
?>

Тип данных должен соответствовать определению вашей таблицы.

В Laravel, если вы используете eloquent, вам может потребоваться переписать Connection.php, чтобы связать параметр соответствующим образом, поскольку текущий код в laravel не использует bindValue для привязки параметров, и поэтому PDO будет использовать тип данных по умолчанию, который является строкой ,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]