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