Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中,我应该将此代码存储在哪里?_Php_Laravel_Code Organization - Fatal编程技术网

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

Php 在Laravel中,我应该将此代码存储在哪里?,php,laravel,code-organization,Php,Laravel,Code Organization,使用Laravel开发web应用程序时,我面临着一些不明确的问题,即在哪里放置一些代码 我有一个类似用户的模型,它从另一个数据库获取数据。我只能在那个数据库里读,但没关系。诸如name、city等字段在数据库中的存储非常不一致。例如,有时一个名称是完全大写的,而有时不是。因此,我创建了一个方法formatAsName,它当前驻留在我的UserController中 但问题是,每次从数据库中检索类似用户的对象时,我都希望对某些列(如名称和城市)使用此方法。该代码应该存储在控制器中,还是属于模型 附

使用Laravel开发web应用程序时,我面临着一些不明确的问题,即在哪里放置一些代码

我有一个类似用户的模型,它从另一个数据库获取数据。我只能在那个数据库里读,但没关系。诸如name、city等字段在数据库中的存储非常不一致。例如,有时一个名称是完全大写的,而有时不是。因此,我创建了一个方法
formatAsName
,它当前驻留在我的
UserController

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

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


谢谢您的时间。

您也可以在模型中定义您的方法,在laravel中有许多方法,
你可以在这里找到更多的代码指导帮助:-

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

对于这种情况,一个很好的方法是使用存储库模式。这样,您就可以为模型创建演示者和转换器,并定义检索模型的方式

    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,并查看此repo,其中有一个示例

您可以直接将这些方法应用于模型中的名称、城市和所有内容,有很多方法可以满足您的需求。您应该扩展您的模型,以定义属性变异器和访问器。Laravel雄辩的模型很好地支持这些功能。看它的文档。啊,太酷了!我以前读过/看过(关于Laracasts,在Laravel 5基础系列中)。谢谢,+1!非常欢迎:)如果它对您有用,那么请更正这些答案。我将查看Laracast设计模式部分,以检查是否有与此相关的内容。此外,我还将该函数放在自定义助手文件中(由composer自动加载)。我想我可能还需要将其他内容格式化为代表性名称。属性访问器与
appends
属性相结合,为我提供了解决方案。谢谢你花时间写这篇文章+1.