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

时间:2015-12-03 08:05:34

标签: php laravel code-organization

使用Laravel开发一个Web应用程序我面临一些不清楚的地方放置一些代码。

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

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

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

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

    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'),
            ];
        } 

很抱歉,但我没有任何来源/材料可以向您发送此模式,但您肯定可以在谷歌上找到它。如果需要,你可以查看我的github并查看这个有一个例子https://github.com/cbcaio/base-laravel

的仓库。