Php 修改SQL Eloquent对每个连接的使用

Php 修改SQL Eloquent对每个连接的使用,php,laravel,eloquent,Php,Laravel,Eloquent,我正在使用最新版本的Laravel连接到多个数据源。其中一个来源是一个旧的Oracle数据库,由于一些需要字符串长度的古老软件,该数据库包含大量空白。尽管有此限制,但这些字段已由具有不同需求的新软件编辑,列的长度都不同(因此未知) 因此,我需要编辑访问它的SQL,以便在trim()s中封装一些查询。比如说, $customer=customer::whereRaw(“RTRIM(\'ID\”)=TO\u CHAR($ID)”)->get() 我只想调用find方法: $customer=cust

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

因此,我需要编辑访问它的SQL,以便在trim()s中封装一些查询。比如说,

$customer=customer::whereRaw(“RTRIM(\'ID\”)=TO\u CHAR($ID)”)->get()

我只想调用find方法:

$customer=customer::find($id)


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

最简单的方法是创建一个扩展了Eloquent的类,其中包含用于查询的函数。然后修改所有模型以扩展新类,而不是雄辩。这样,模型将具有Elount的所有功能以及您创建的功能。

为了澄清,我希望能够编辑整个DB::connection()的find()函数。如果有更好的方法,我洗耳恭听。最好的方法可能是在模型内部创建一个函数来创建查询。如果你不想将函数添加到所有的模型中,那么创建一个新类来扩展Eloquent,在那里添加函数,然后让模型扩展新类。我愿意在模型中编辑查询,但是这将是一个大项目,这个业务将使用大约30个应用程序,而且必然会有许多模型。有一个为期两年的计划来更新使用Oracle数据库的软件,届时我们可以更新Oracle,然后通过某种批量查询修改字段。因此,虽然我可以在那个时候编辑所有的模型,但如果我只需要编辑一个基类,对未来的我来说会更容易。我可以做你的第二个选择。我没想到。事实上,我想我会走那条路。如果您想提交parent::parent扩展作为答案,我会接受。您可能可以扩展基本的Eloquent/Model类,并通过app.php将其作为默认模型类加载,如果您随后扩展了延迟加载的Eloquent,则基本上可以在自定义Eloquent扩展和默认扩展之间切换。如果你需要再次切换,似乎比编辑所有模型更容易。谢谢你让我直截了当,朋友。