首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel代码简洁之道和性能优化

经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...IGNORE 的支持 先简单说明一下业务场景: 首先表结构设计是:互相喜欢和添加联系人都是双向关系,即入库A B,B A这样成对的双向数据 触发互相喜欢,插入2条双向数据,插入之前校验是否存在,存在不重复添加...你可以在 Eloquent 模型中使用 UPSERT 和 INSERT IGNORE 查询。...->upsert(...); 在 Eloquent 中,所有版本的 LumenHasUpsertQueries都需要该特性。...当然了还是有一些注意点和坑,下面分享一下 注意的问题 要根据需求添加唯一索引 根据官方文档中的说明,我们的model中必须添加这行代码,才能以Eloquent的方式用 use \Staudenmeir\

5.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    让LaravelLumen队列消费Non-Laravel queue job

    如何让Laravel/Lumen作为消费者处理非Laravel/Lumen生产的消息?...小伙伴们应该都清楚在Laravel中的队列体系,是把实现了你的Job类进行序列化之后在队列中传输,消费者一方通过反序列化恢复对象,所以在Job类中我们可以完整传递信息,如Eloquent\Model 等...,但是如果生产者不是Laravel/Lumen体系的服务,投递到队列的消息也不是Queueable的对象,那Laravel Queue就无法正常解析,并且抛出异常。...--- 其实对于Allow Laravel to process non-laravel queue job这个问题还是比较有普遍性,毕竟生产者和消费者不是用一个框架,甚至不同语种都是很正常的。...handle方法处理,那么能够让Laravel正确解析的数据结构(json)为: { "job": "App\\Jobs\\GatewayJob@handle", "data": { "

    2.6K30

    Lumen微服务生成Swagger文档

    本文将会告诉你如何借助phpstorm中annotations插件,在开发Lumen微服务项目时(Laravel项目和其它php项目方法类似)快速的在代码中使用注释来创建swagger文档。...框架配置 我们使用当前最新的 Lumen 5.7 来演示。...演示代码放到了github,感兴趣的可以参考一下 https://github.com/mylxsw/lumen-swagger-demo 安装依赖 在Lumen项目中,首先需要使用 composer...routes.docs 用于访问生成的API文档原文,json格式,默认路由地址为 /docs paths.docs 和 paths.docs_json 组合生成 api-docs.json 文件的地址...更多 本文简述了如何在Lumen项目中使用代码注释自动生成Swagger文档,并配合phpstorm的代码提示功能,然而,学会了这些还远远不够,你还需要去了解Swagger文档的语法结构,在 swagger-php

    1.9K20

    LaravelLumen 使用 redis队列

    一、概述 在Web开发中,我们经常会遇到需要批量处理任务的场景,比如群发邮件、秒杀资格获取等,我们将这些耗时或者高并发的操作放到队列中异步执行可以有效缓解系统压力、提高系统响应速度和负载能力。...二、配置文件 我们仍然从配置文件开始,首先我们需要在配置文件中配置默认队列驱动为Redis。lumen没有配置文件,可以从laravel项目中拷贝一份config目录过来。...要使用 redis 队列驱动,需要在配置文件 config/database.php 中配置 Redis 数据库连接。...2、任务类结构 任务类非常简单,通常只包含处理该任务的 handle 方法,在任务被处理的时候调用,注意我们可以在任务的 handle 方法中进行依赖注入。...举个例子,这个键可以基于任务类名和操作 Eloquent 模型的 ID 进行构建。 8、最大进程数量 除此之外,还可以指定可以同时处理给定任务的最大进程数量。

    2.4K20

    最为常用的Laravel操作(1)-Eloquent模型

    方法会设置关联关系的外键为 null $user->account()->dissociate(); $user->save(); 附加 / 分离多对多关联模型 $user = App\User::find(1); // 在连接模型的中间表中插入记录...访问器和修改器 允许你在获取模型属性或设置其值时格式化 Eloquent 属性....例如, 你可能想要使用 Laravel 加密器对存储在数据库中的数据进行加密, 并且在 Eloquent 模型中访问时自动进行解密....除了自定义访问器和修改器, Eloquent 还可以自动转换日期字段为 Carbon 实例甚至 将文本转换为 JSON ....如果数据库有一个 JSON 或 TEXT 字段类型包含了序列化 JSON, 可使用 array 转换, 将自动进行 序列化 和 反序列化 . class User extends Model {

    35200

    虚幻引擎技术大牛解读全局光照系统Lumen

    ---- 新智元报道   编辑:David 桃子 【新智元导读】虚幻引擎5中,多亏有了全局光照系统Lumen才能让更多人人沉浸在虚拟世界中。...在虚幻引擎中,全局光照和反射系统Lumen这一技术便是由Krzysztof Narkowicz和Daniel Wright一起创立的。...除了高度场,Lumen还有其他属性,如反照率或照明,这样就能够计算出每次的照明。 在Lumen中,开发者将这张带有表面数据的完整贴花式投影命名为卡(Cards),即捕获位置。...那么,研究人员又提出了另一个想法:遵循紫外线展开技术,并尝试聚类表面元素。 因为要处理数百万个由Nanite提供的多边形,因此他们将三角形换成面元。...无卡边和带卡边的跟踪 合并场景表示 在软件中追踪大量的非相干射线是非常慢的。理想情况下,可以使用单一的全局结构,而非多个高度场。

    1.2K20

    深入理解 Laravel Eloquent(三)——模型间关系(关联)

    在本篇文章中,我将跟大家一起学习 Eloquent 中最复杂也是最难理解的部分——模型间关系。...假如我们有两个模型:User 和 Account,分别对应注册用户和消费者,他们是一对一的关系,那么如果我们要使用 Eloquent 提供的一对一关系方法,表结构应该是这样的: user: id ......我们定义两个模型:Article 和 Tag,分别表示文章和标签,他们是多对多的关系。表结构应该是这样的: article: id ... ... tag: id ... ......其他关系 Eloquent 还提供 “远层一对多关联”、“多态关联” 和 “多态的多对多关联” 这另外三种用法,经过上面的学习,我们已经掌握了 Eloquent 模型间关系的基本概念和使用方法,剩下的几种不常用的方法就留到我们用到的时候再自己探索吧...---- 至此,深入理解 Laravel Eloquent 系列文章到此结束。推荐继续了解 软删除 、转换成数组/JSON。 END

    2.7K30

    orm 系列 之 Eloquent演化历程2

    Record模式中Model的功能,包括了Model、Builder和Relation功能,忘记的可以去看前一篇orm 系列 之 Eloquent演化历程1的内容 Query:包含了最基本的Sql的操作和语法逻辑...模型结构 接下来,让我们看看构建这种关联关系需要在模型中定义什么: 和Eloquent的内部的组件进行有效的功能了,这个时候需要一个项目的门面,帮助我们和外界沟通,让外界尽可能简单的使用Eloquent,于是就出现了...User extends Eloquent { // } 此处Eloquent已经通过初始化设置了静态变量$resolver,我们可以方便的获取连接Connection了,也就是有了数据库操作的功能...Schema和Query,同时DatabaseManger和Eloquent还处理协作关系,Eloquent负责领域类的打理,最后ConnectionFactory则打点着所有的Connection,提供基础的功能

    2.4K30

    在Laravel中使用数据库事务以及捕获事务失败后的异常

    Description 在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。...Example 假设有要在数据库中存储一个知识点,这个知识点同时属于两个不同的考点,也就是考点和知识点这两个数据是多对多的关系,那么要实现这种数据结构就需要三个表: 知识点表 wiki: 考点表 tag...: 考点知识点关联表 wiki_tag_rel 现在要开启事务新增Wiki数据,新增wiki成功后再把它关联到指定的考点上去 (在laravel中使用查询构建器或者Eloquent ORM执行query...(['status' => 'ok']); } //用DB facade的事务方法控制 Eloquent ORM的事务 public function createWiki...两个Model使用了belongsToMany建立了多对多的关系 //通过attach方法来附加wiki和tag的关系(写入中间表) $newWiki->

    1.3K40

    Laravel如何使用数据库事务及捕获事务失败后的异常详解

    前言 如果大家在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。...方法来还原事务: DB::rollBack(); 最后,可以通过 commit 方法来提交这个事务: DB::commit(); 注意: DB facade 的事务方法也可以用来控制 查询语句构造器 及 Eloquent...示例介绍 假设有要在数据库中存储一个知识点,这个知识点同时属于两个不同的考点,也就是考点和知识点这两个数据是多对多的关系,那么要实现这种数据结构就需要三个表: 知识点表 wiki: ---- id title...['status' => 'ok']); } //用DB facade的事务方法控制 Eloquent ORM的事务 public function createWiki(array $data) {...两个Model使用了belongsToMany建立了多对多的关系 //通过attach方法来附加wiki和tag的关系(写入中间表) $newWiki->tags()->attach($tagIds

    1.7K30

    区块链和边缘计算如何协同工作

    这种结构简化了网络效率和可扩展性,以改进数据处理和实时应用,如机器学习和增强/虚拟现实。 为什么要将区块链和边缘计算结合起来?...STL Partners提供了一个方便的图形,概述了在没有边缘计算和有边缘计算的情况下使用区块链的情况。第一种结构涉及更多的复杂性、延迟和障碍,而第二种结构则是流线型、快速和高效的。...这项研究试图分析“边缘智能城市应用中基于区块链的安全和隐私供应,以保持城市更安全和更舒适的生活场所。”...◆在提供备用资源容量以确保高质量连接并降低恶意人为风险时,需要用户提供5000单位自己的$EDGE加密货币。 ◆价值归因旨在奖励贡献者基于使用情况提供的资源。...延迟和带宽使用的减少有助于提高边缘网络上分散式转换的速度和效率。事实上,在Lumen环境中,设计的延迟时间为5毫秒甚至更短,这会产生出色的应用程序性能。

    62810

    Vite2+Vue3+TypeScript:搭建企业级轻量框架实践

    引言 随着Vue3为广大开发者所接受和自身生态逐渐完善,更多同学往vue3的工程化方向完善,本文恰好给大家介绍下如何更好使用vue3及其周边插件,以及让他们组合到整个工程中去。...的 action 被调度为常规的函数调用,而不是使用 dispatch 方法或 MapAction 辅助函数,这在 Vuex 中很常见 支持多个Store 支持 Vue devtools、SSR 和...工程结构 . ├── README.md ├── index.html 项目入口 ├── mock mock目录 ├── package.json ├...src/types和src/constants分别存放项目的类型定义和常量,以页面结构来划分目录。 3....请求中心 src/api包含每个页面的异步请求,也是通过页面结构来划分目录。

    2.9K73

    Vite2+Vue3+TypeScript:搭建企业级轻量框架实践

    [w4gln4myxo.png] 引言 随着Vue3为广大开发者所接受和自身生态逐渐完善,更多同学往vue3的工程化方向完善,本文恰好给大家介绍下如何更好使用vue3及其周边插件,以及让他们组合到整个工程中去...的 action 被调度为常规的函数调用,而不是使用 dispatch 方法或 MapAction 辅助函数,这在 Vuex 中很常见 支持多个Store 支持 Vue devtools、SSR 和...工程结构 . ├── README.md ├── index.html 项目入口 ├── mock mock目录 ├── package.json ├...src/types和src/constants分别存放项目的类型定义和常量,以页面结构来划分目录。 3....请求中心 src/api包含每个页面的异步请求,也是通过页面结构来划分目录。

    2.4K21

    Vite2+React+TypeScript:搭建企业级轻量框架实践

    既然迁移过来了,也借着空闲时间给大家介绍下一个 Vite2 + React + TypeScript 的项目中, 如何合理搭建和使用周边插件,以及让他们组合到整个工程中去,也欢迎大家阅览和补充更优想法。...代码量更少:不需要定义繁琐的react component模板代码,状态的读写不需要在每个生命钩子中穿插使用,使代码结构变得浅层、简单; hooks缺点 1....工程化搭建 言归正传,我们通过以上技术,整合到一个项目中去。...工程结构 . ├── README.md ├── index.html 项目入口 ├── mock mock目录 ├── package.json ├...src/types和src/constants分别存放项目的类型定义和常量,以页面结构来划分目录。 3.

    1.9K10

    使用Go语言框架进行web开发笔记

    界面和功能 一个跳转到Oauth2登陆授权页面的链接 授权完成后,跳回服务的页面,此时获得了access_token, 就可以为所欲为了。全部的功能也都集中在这个页面,最终的界面如下图所示。 ?...点击连接是用来打开websocket连接的。开始发送数据是开始把用户ID发给服务端,服务端调用api开始抓取图片。停止用于停止本次的抓取服务。已完成数量用于实时返回抓取的图片数量。 程序大致结构 ?...同时思考,如何实现一个eloquent的api。貌似有难度。 Json处理 强类型决定了Json的处理是个痛。...之前写过一个天气预报的小程序,用的是map[string]*json.RawMessage 这种映射结构,然后一层一层解开json。...这是一个痛苦的过程,想起php中的json_decode()不禁泪流满面。 Stop Goroutine 如何中断一个goroutine是一个问题,因为需要控制开始停止。

    1.4K70
    领券