首页 > 解决方案 > 修改每个连接的 SQL Eloquent 使用

问题描述

我正在使用最新版本的 Laravel 连接到多个数据源。其中一个来源是旧的 Oracle 数据库,由于一些需要字符串长度的古老软件,该数据库包含大量空白。尽管有这个限制,但这些字段已经被具有不同要求的新软件编辑,并且列的长度都是不同的(因此是未知的)。

考虑到这一点,我需要编辑访问它的 SQL,以便在 trim()s 中包装一些查询。例如,

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

我希望能够只调用 find 方法:

$customer = Customer::find($id)

这只是一个例子。几乎所有的默认函数都被破坏了,因为查询需要在它们前面加上某种修剪。我了解如何影响查询的动态部分,但我需要在此之前编辑该列。对不起,如果这是一个愚蠢的问题,我只是错过了文档中的一些内容。

标签: phplaraveleloquent

解决方案


最简单的方法是创建一个扩展 Eloquent 的类,并带有查询函数。然后修改所有模型以扩展新类而不是 Eloquent。这样,模型将具有 Eloquent 的所有功能以及您创建的功能。


推荐阅读