首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

思考:如何提高Model层查询DB效率?如何精简代码?...经过一番调研之后发现了一个堪称神器扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...这可以是单个记录或多个记录。 第二个参数是唯一标识记录列。除 SQL Server 外所有数据库都要求这些列具有PRIMARY或UNIQUE索引。 提供要更新列作为第三个参数(可选)。...Lumen 如果您使用 Lumen,则必须手动实例化查询构建器: $builder = new \Staudenmeir\LaravelUpsert\Query\Builder(app('db')->connection...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库时间是int类型,不是laravel默认时间格式,并且我们插入时间和更新时间也不是laravel默认字段

5.7K20

Lumen 实现 SQL 监听

首发于:我博客 之前 Lumen 框架从 5.6 升级到 5.7。发现 laravel-sql-logger 包不能正常纪录日志了。...Lumen有一些自己调试SQL方法,但是这些并不是我们想要。所以我们只能自己写监听事件。 具体解决方案是,我们首先创建一个Listener文件。...("id", 1)->first(); // 在控制器执行查询方法 } } 注册路由 // file: routes/web.php $router->get('/one', "UserController...那么我们来尝试运行一下: QueryExecuted {#65 ▼ +sql: "select * from `users` where `id` = ?...其实 laravel-sql-logger还有一些高级显示功能。比如说打印日志时候会顺带着打印请求URL。打印请求时间等。这些我就不这里具体完善了。如果大家有兴趣,可以自己想办法实现。很简单

2.9K10

Laravel Eloquent 模型关联关系(下)

基于关联查询过滤模型实例 有结果过滤 有的时候,可能需要根据关联查询结果来过滤查询结果,比如我们想要获取所有发布过文章用户,可以这么做: $users = User::has('posts')->get...= User::has('posts', '>', 1)->get(); 底层执行 SQL 查询语句如下: select * from `users` where ( select...whereHas/orWhereHas 方法基于闭包函数定义查询条件,比如我们想要过滤发布文章标题中包含「Laravel学院」所有用户: $users = User::whereHas('posts...', function ($query) { $query->where('title', 'like', 'Laravel学院%'); })->get(); 底层执行 SQL 查询语句如下...('content', 'like', 'Laravel学院%'); })->get(); 无结果过滤 与 has/orHas 方法相对,还有一对 doesntHave/orDoesntHave 方法

19.5K30

lumen安装Horizon

但是我们使用lumen,官方Horizon并不支持lumen。所以又去找第三方,结果发现已经八个月没有更新了。无奈尝试自己维护。发现一堆坑。根本填不完。今天早上想着去packagist去淘淘。...还真让我发现了一个正在维护: horizon-lumen。 一切安装就按照README.md上面的步骤进行安装就好了。 再此说下,中间碰到坑。...在执行如下命令: php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider" 出现如下错误: In Facade.php...line 218: A facade root has not been set....经过查询发现解决方案是在boorstrap/app.php中注释: $app->withFacades(); // 去掉这一行注释 我发现这一行已经开启了,但是还是出现这个错误。

1.8K40

为什么 Laravel 会成为最成功 PHP 框架?

在近几年对PHP框架流行度统计中,Laravel始终遥遥领先。那么是什么让Laravel成为最成功PHP框架?...Laravel以其简洁、优雅特性赢得了大家广泛关注,无论是专家还是新手,在开发PHP项目的时候,都会第一时间想到Laravel。本文我们将讨论为什么Laravel会成为最成功PHP框架。...微服务和程序接口 Lumen是一个由laravel衍生专注于精简微框架。它高性能程序接口可让你更加简单快速开发微型项目。...Lumen使用最小配置集成了所有laravel重要特性,你可以通过将代码复制到laravel项目的方式将完整框架迁移过来。 ', 100)->take(10)->get(); foreach ($users as $user) { var_dump($user

3.8K90

laravel 5.6日志理解及日志格式定义「建议收藏」

Laravel/Lumen日志简单系统介绍: Laravel/Lumen日志默认是基于Monolog进行了一层封装,如果要求不高,用起来还是十分容易,本文基于laravel5.6/Lumen5.6...---- 基本配置(解决日志路径文件名和保存周期等) 开始使用Laravel5.5时经常遇到有人Laravel中日志为什么只有一个文件,能不能修改日志目录,能不能修改日志文件名?...], 'single' => [ 'driver' => 'single', 'path' => storage_path('logs/laravel.log...], 'daily' => [ 'driver' => 'daily', 'path' => storage_path('logs/laravel.log...几经折腾,发现 Monolog 有很多可以用 Formatter ,但发现官方把字段写死在里边了,抓狂到了想直接改官方源码龌龊地步了,还是不死心,最终发现Laravel5.6logging参数中有一个

64930

Lumen框架多数据库连接配置方法

Lumen作为一款API导向很浓框架,配置极简化,默认只支持一路DB配置 然而随着业务复杂度提高,引入多个数据库连接似乎无法避免,下面介绍一下LUMEN连接多个数据库配置方法: 修改.env文件,...DB_TEST_DATABASE=dbname2 DB_TEST_USERNAME=dbname2 DB_TEST_PASSWORD=password DB_TEST_TIMEOUT=4 因为LUMEN...在加载DB配置时,还是会默认去laravel模块下寻找相关配置文件,这时修改laravel模块下database.php文件 文件位置在: ..../vendor/laravel/lumen-framework/config/database.php 添加.env文件中新增DB配置,如下: //默认配置 'mysql' => [...00:00'), 'strict' => env('DB_STRICT_MODE', false), ], 在项目中调用时,直接按database.php中做法初始化

1.2K10

当我们讨论swoole时候,我们在讨论什么?

这个swoole底层实现决定,官方建议可以利用多进程,比如异步任务。 应用方式 扩展:laravel+swoole,laravel-s。两个框架对数据库IO不支持协程并发。...Laravel/Lumen中存在很多单例、静态属性,不同请求间数据会相互影响,这是不安全 。...比如数据库连接就是单例,同一个数据库连接共享同一个PDO资源,这在同步阻 塞模式下是没问题,但在异步协程下是不行,每次查询需要创建不同连接,维护 不同IO状态,这就需要用到连接池。...相同点:go与swoolechannel功能上大体类似于一个队列,主要用来保证多个协程之间通讯,「用通信来共享内存,而不是通过共享内存来通信」。..., "jinzhu")` 是调用第一个方法,它会创建一个新 `Statement` db.Where("name = ?", "jinzhu2").Where("age = ?"

5.9K40

lumen搭建php微服务

在互联网高速发展今天,如果你不知道微服务,那么很多公司你是进不去,并且如果你不懂微服务,那么你在处理复杂业务时候将会变得异常头疼。那么什么是微服务,php中微服务是如何处理。...其中微表示各个服务提供功能单一微小,不像普通服务那样巨大服务。 它们是最小,集中服务,仅处理部分后端逻辑。与写入新数据相比,我们读取现有数据倾向要大得多。...Lumen 它是一个精简laravel框架,舍弃了laravel中许多繁重功能,它可以高效率地对外提供api方法。...Lumen包含特性 缓存 Command Scheduler 控制器 Eloquent ORM 错误处理 数据库抽象 依赖注入 日志 队列任务 总结 其实简单来讲,微服务就是一个个api接口,只不过这些...api接口不是由一个整体服务来提供,它是由一个个模块来提供,我们可以通过lumen来开发部署多个模块,每个模块单独部署,这就是我们所说微服务。

50110

牛哇,PHP这个开发框架真的好香!

Laravel框架相当于JavaSpring,生态or文档 是很完善。 之前写Javamybatis各种sql和字段处理,试过php开发之后,确实很快啊。...这个语法是并且 (and) 关系语法这个语法是或者 (or) 关系语法 采取model进行sql增删改查(常用) 9.4 查询 laravel中对数据库开发模型非常重要。...::query()->where($where)->first(); dd($list->toArray()); } 打开postman查询,进行dd调试 响应 { "code": 0...更高级用法,更多内容建议看官方文档:https://learnku.com/docs/laravel/7.x/eloquent/7499 总结 laravel框架采取链式查询sql。...更多sql链式编写查询官方文档,应该是很快可以上手。 之后还有比laravel更高级用法lumen框架,就类似Javamybatis-plus与mybatis。

23520

Laravel 模型关联基础教程详解

Laravel 中定义模型关联是每个 Laravel 开发者可能已经做过不止一次事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样关联,你应该选择哪一个?...当涉及到查询模型时,我们如何充分利用模型关联功能? Laravel 模型关联可能会让人糊涂。...你可以通过创建迁移文件在 Laravel 中创建此中间表。 远程关联 远程一对一 has one through 关联通过单个中间关联模型实现。...第二个参数是中间模型名称。 远程一对多 「has many through」 关联相当于 「has one through」 关联,只是对于多个记录。...product) { $product- pivot- created_at; } 查询 has one through 和 has many through 工作方式与其他关联完全相同。

5.5K31

laravel ORM关联关系中 with和whereHas用法

with 渴求式预加载 可以有效避免 N+1 问题,用法如下: $books = App\Book::with('author')- get(); 如果有多个关联关系可以用“,”隔开,还可以使用闭包来对关联关系进行限制...,向下面这样: //查询所有的用户,查询条件:发布过标题中有firstpost $users = User::with(['posts' = function ($query) { $query...- where('title', 'like', '%first%'); }])- get(); 结果会查找所有的用户,返回每个用户信息中都会多一个posts数组,但是posts数组可能为空(不符合查询要求...,查询不存在关联关系,像下面这样: // 获取发布文章标题中有first用户 $users= User::whereHas('posts', function ($query) { $query...这就是我对 with 和 whereHas 一些理解了 以上这篇laravel ORM关联关系中 with和whereHas用法就是小编分享给大家全部内容了,希望能给大家一个参考。

3.9K31

Laravel关联模型中过滤结果为空结果集(has和with区别)

([ 'group_id' = $groupId, ]); }]) // 更多查询省略......后来看到了Laravel关联模型has()方法,has()是基于存在关联查询,下面我们用whereHas()(一样作用,只是更高级,方便写条件) 这里我们思想是把判断有没有优惠券数据也放在第一次查询逻辑中...看下最终SQL: select * from `youquan_user_coupons` where exists (select `id`, `group_id`, `cover`, `group_number...然后走下一步with()查询,因为此时都筛选一遍了,所以with可以去掉条件。 显然区分这两个作用很重要,尤其是在列表中,不用特意去筛选为空数据,而且好做分页。...总结 以上所述是小编给大家介绍Laravel关联模型中过滤结果为空结果集(has和with区别),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家

3.3K40

LaravelLumen 使用 redis队列

lumen没有配置文件,可以从laravel项目中拷贝一份config目录过来。... 接口, 告诉 Laravel 将该任务推送到队列,而不是立即运行: lumen中 app/Jobs目录已经存在,由于不能执行artisan命令,直接复制目录中ExampleJob.php即可。...dispatch 方法需要唯一参数就是该任务实例: lumen中用法: 4、指定最大失败次数 指定队列任务最大失败次数一种实现方式是通过 Artisan 命令 --tries 切换: php...配置 Supervisor Supervisor 配置文件通常存放在 /etc/supervisor/conf.d 目录,在该目录下,可以创建多个配置文件指示 Supervisor 如何监视进程,例如,...让我们创建一个开启并监视 queue:work 进程 laravel-worker.conf 文件: [program:laravel-worker] process_name=%(program_name

2.3K20
领券