在 Laravel 中,我应该将此代码存储在哪里?

In Laravel, where should I store this code?

使用 Laravel 开发网络应用程序时,我遇到了一些不清楚将代码放在哪里的问题。

我有一个类似用户的模型,它从另一个数据库获取数据。我只能读取该数据库,但没关系。名称、城市等字段在数据库中的存储非常不一致。例如,有时名称是完全大写的,有时则不是。所以我创建了一个方法 formatAsName 目前驻留在我的 UserController.

但问题是,每次从数据库中检索到类似用户的对象时,我都想对某些列(如名称和城市)使用此方法。这段代码应该存储在控制器中,还是属于模型?

附带问题:有没有办法告诉 Laravel 在执行此模型的查询时执行回调?否则我必须手动编写一些核心模型方法。这没有问题,因为交互有限(仅检索),但如果支持,那将是最好的方法。

感谢您的宝贵时间。

你也可以在模型中定义你的方法,laravel中有很多方法, 您可以在此处找到有关代码指导的更多帮助:- HERE

我知道你已经得到了答案,但我还是想给你一个提示。

这种情况的一个好方法是使用存储库模式。这样做,您可以为您的模型创建 Presenter 和 Transformer,并定义您希望如何检索模型

    public function transform(User $model)
        {
            return [
                'name'         => strtolower($model->name),
                'city'         => strtolower($model->city),
                'created_at'    => Carbon::parse($model->created_at)->format('d-m-Y'),
                'updated_at'    => Carbon::parse($model->updated_at)->format('d-m-Y'),
            ];
        } 

抱歉,我没有任何 source/material 可以发送给您有关此模式的信息,但您肯定可以在 google 上找到它。如果你愿意,你可以查看我的 github 并查看这个有示例的 repo https://github.com/cbcaio/base-laravel