服务类中 怎么调用模型基类的函数-icode9专业技术文章分享
2024/9/15 6:03:09
本文主要是介绍服务类中 怎么调用模型基类的函数-icode9专业技术文章分享,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
要在服务类中调用模型基类的函数,您可以通过在模型类中定义公共方法,然后在服务类中实例化模型,并调用该公共方法来实现。以下是一个示例:
首先,在模型基类中定义公共方法:
namespace App\Models; use Illuminate\Database\Eloquent\Model; use Carbon\Carbon; class BaseModel extends Model { // 封装日期范围查询条件 public function applyDateRangeFilter($query, $field, $begin, $end) { if ($begin) { $query->where($field, '>=', Carbon::parse($begin)->toDateTimeString()); } if ($end) { $query->where($field, '<=', Carbon::parse($end)->toDateTimeString()); } } // 封装 IN 查询条件 public function applyInFilter($query, $field, $value) { if ($value) { $valueArr = explode(',', $value); $query->whereIn($field, $valueArr); } } // 封装通用键值对查询条件 public function applyKeyFilters($query, $param, $keys) { foreach ($keys as $key) { if (isset($param[$key])) { $query->where($key, '=', $param[$key]); } } } }
PHP
然后,在服务类中实例化模型,并调用模型基类的方法:
namespace App\Services; use App\Models\UserOrderModel; class OrderService { protected $userOrderModel; public function __construct(UserOrderModel $userOrderModel) { $this->userOrderModel = $userOrderModel; } public function filterOrders($param) { return $this->userOrderModel->where(function ($query) use ($param) { $this->userOrderModel->applyDateRangeFilter($query, 'created_at', $param['created_begin_at'] ?? null, $param['created_end_at'] ?? null); $this->userOrderModel->applyDateRangeFilter($query, 'pay_at', $param['pay_begin_at'] ?? null, $param['pay_end_at'] ?? null); $this->userOrderModel->applyInFilter($query, 'shop_code', $param['shop_code'] ?? null); $keys = ['id', 'order_no', 'sale_code', 'user_id', 'contract_type', 'out_type', 'pay_status']; $this->userOrderModel->applyKeyFilters($query, $param, $keys); })->orderBy('id', 'desc')->get(); } }
PHP
在上面的示例中,服务类中实例化了 UserOrderModel
模型,并在 filterOrders
方法中调用了模型基类中的公共函数来过滤订单数据。
通过这种方式,您可以在服务类中调用模型基类中的函数,实现代码的可重用性和模块化。
标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。
这篇关于服务类中 怎么调用模型基类的函数-icode9专业技术文章分享的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26怎么使用nsenter命令进入容器?-icode9专业技术文章分享
- 2024-12-26导入文件提示存在乱码,请确定使用的是UTF-8编码怎么解决?-icode9专业技术文章分享
- 2024-12-26csv文件怎么设置编码?-icode9专业技术文章分享
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享