Изменение SQL Eloquent для каждого соединения - PullRequest
0 голосов
/ 19 февраля 2020

Я использую последнюю версию Laravel для подключения к нескольким источникам данных. Одним из таких источников является старая база данных Oracle, которая содержит много пустого пространства благодаря некоторому древнему программному обеспечению, требующему длины строки. Несмотря на это ограничение, с тех пор поля были отредактированы новым программным обеспечением с различными требованиями, и все столбцы имеют разную длину (и, следовательно, неизвестны).

В связи с этим мне нужно отредактировать SQL, который обращается к нему, чтобы обернуть некоторые части запросов в trim (). Например,

$customer = Customer::whereRaw("RTRIM(\"ID\") = TO_CHAR($id)")->get();

Я бы хотел просто вызвать метод поиска:

$customer = Customer::find($id)

Это просто один пример. Практически все функции по умолчанию не работают, потому что к запросам требуется какая-то подгонка. Я понимаю, как я могу повлиять на динамическую часть запроса, но мне нужно отредактировать столбец перед этим. Извините, если это глупый вопрос, и я просто что-то пропустил в документации.

1 Ответ

2 голосов
/ 19 февраля 2020

Самый простой способ сделать это - создать класс, расширяющий Eloquent, с функцией для запроса. Затем измените все ваши модели, чтобы расширить новый класс вместо Eloquent. Таким образом, модели будут иметь все функции Eloquent, а также функции, которые вы создаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...