当前位置: 首页 > news >正文

Laravel一些优雅的写法

1. 新增操作


// 原则,所有服务类只有一个public入口,或者多个public入口,但是他们做都是同一件事情
Class CreateService {// 创建类的入口, 根据dto去新建public function create(Dto $dto){// 先构建model对象, 不要在事务期间构建,减少事务等待$good = $this->buildGood($designProduct, $dto);$good->setRelation('aList', $this->buildAList($dto));$good->setRelation('bList', $this->buildBList($dto));DB::transaction(function () use ($good) {// 保存model对象// 主表$good->save();// 主表关联其他表$good->aList()->saveMany($designReference->aList->all());// 主表关联其他表$good->bList()->saveMany($designReference->bList->all());// 触发事件,要delay延迟事件,确保事务提交后触发delay_event(new GoodCreated());});}// 根据product类去新建public function createByProduct(Product $product) {// build reference// save()}/*** @param Dto $dto* @return Collection*/protected function buildAList(Dto $dto): Collection {$newCollection  = new Collection();$$list = array_filter_unique(explode(',', $dto->getName()));if (empty($list)) {return $newCollection;}foreach ($list as $name) {$newCollection->add(new GoodAList(['name'    => $name,]));}return $newCollection;}protected function buildBList(Dto $dto): Collection {$newCollection  = new Collection();if (!empty($dto->getBName())) {$newCollection->add(new GoodBList(['country_name'    => $dto->getBName(),]));}return $newCollection;}/*** @param Product $product* @param Dto $dto* @return Good*/protected function buildGood(Product $product,Dto $dto): Good {return new Good(['updated_at'   => $dto->getDataUpdatedAt(),'band_id'   => $product->band_id,]);}}$service = new CreateService();
$service->create();

http://www.lryc.cn/news/177674.html

相关文章:

  • vue+three.js中使用Ammo.js
  • 【k8s】kubectl命令详解
  • Centos 7 部署SVN服务器
  • SEO方案尝试--Nuxtjs项目基础配置
  • 【算法分析与设计】动态规划(上)
  • Java多线程篇(6)——AQS之ReentrantLock
  • 【计算机网络】IP协议第二讲(Mac帧、IP地址、碰撞检测、ARP协议介绍)
  • TouchGFX界面开发 | 按钮控件应用示例
  • BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
  • 共同见证丨酷雷曼武汉运营中心成立2周年
  • 一种单键开关机电路图
  • 设计模式2、抽象工厂模式 Abstract Factory
  • C++ 32盏灯,利用进制和 与 或 进行设计
  • Ffmpeg-(1)-安装:ubuntu系统安装Ffmpeg应用
  • 系统集成|第十一章(笔记)
  • 二叉树题目:二叉树剪枝
  • JAVA中使用CompletableFuture进行异步编程
  • uniapp:配置动态接口域名,根据图片访问速度,选择最快的接口
  • Lambda表达式常见用法(提高效率神器)
  • 2023旷视自驾感知算法暑期实习一面
  • Python3 如何实现 websocket 服务?
  • SQLAlchemy常用数据类型
  • Vue路由与nodejs下载安装及环境变量的配置
  • HarmonyOS之 应用程序页面UIAbility
  • 数据集笔记: Porto
  • 修改vscode底部栏背景和字体颜色
  • 加速企业AI实施:成功策略和效率方法
  • 【图论C++】树的重心——教父POJ 3107(链式前向星的使用)
  • hhh百度地铁广告太搞笑了;24家国内大模型公司面经;LLM法律应用实践;AI+教育产品图谱与工作流 | ShowMeAI日报
  • 项目管理:项目经理一定要避开这四大误区