Форматировать десятичное значение в базе данных в предложении where - PullRequest
0 голосов
/ 25 января 2019

Я хочу получить данные из базы данных, но формат сравниваемых значений не соответствует.

Числа в базе данных сохраняются в странном формате - иногда округляются и некоторые из них являются десятичными (10, 14, 15, 12.44, 16.10 и т. Д.)

В массиве у меня есть значения, округленные с точностью до 2 десятичных знаков.

Я хочу получить данные из базы данных примерно так:

$foundPayments = $this>paymentsRepo>newQuery()>whereRaw("CONVERT(DECIMAL(10,2),payments.amount) = :payments", ['payments' => $payments]);

Althought, я в конечном итоге с ошибкой, как это: Syntax error: 7 ERROR: syntax error at or near ","

Я не уверен, работает ли код в laravel 5.1 с отправкой параметров, как я, но это не совсем то, о чем я забочусь - одни и те же ошибки, даже если я не использую переменную.

EDIT:

Я использую Postgres.

1 Ответ

0 голосов
/ 25 января 2019

Я думаю, что синтаксис, который вы используете для функции преобразования, неверен. Сначала вы должны передать значение, а затем тип, в который вы переводите. Но, пожалуйста, попробуйте функцию приведения, я думаю, что она должна дать вам ожидаемый результат.

$foundPayments = $this->paymentsRepo->newQuery()
    ->whereRaw("CAST(payments.amount as DECIMAL(10,2)) = :payments", 
              ['payments' => $payments]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...