在 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
使用 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