返回顶部
首页 > 资讯 > 精选 >laravel的chunk方法如何用
  • 929
分享到

laravel的chunk方法如何用

2023-06-30 22:06:13 929人浏览 独家记忆
摘要

这篇文章主要介绍“laravel的chunk方法如何用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel的chunk方法如何用”文章能帮助大家解决问题。在laravel中,chunk()方

这篇文章主要介绍“laravel的chunk方法如何用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel的chunk方法如何用”文章能帮助大家解决问题。

在laravel中,chunk()方法用于将集合分割为多个指定大小的较小集合,语法为“$指定集合->chunk(指定数量);”;该方法会对各个用户数据进行更新后再查看各个用户数据,这样在查询数据时没有获取大量数据,能够减轻系统的压力。

本文操作环境:windows10系统、Laravel6版、Dell G3电脑。

laravel的chunk方法怎么用

chunk()

chunk 方法将集合分割为多个给定大小的较小集合。将集合显示到网格中非常有用。

$prices = collect([18, 23, 65, 36, 97, 43, 81]);$prices = $prices->chunk(3);$prices->toArray();

以上代码生成效果。

[    0 => [        0 => 18,        1 => 23,        2 => 65    ],    1 => [        3 => 36,        4 => 97,        5 => 43    ],    2 => [        6 => 81    ]]

常规使用

如果有一个这样的需求:对数据库的全部数据查询出来,进行一系列更新

简单粗暴的方法是 把查询到的全部数据,使用foreach进行操作,然后再存入数据库

$users = User::all();foreach ($users as $user) {  $some_value = ($user->some_field > 0) ? 1 : 0;  $user->update(['some_other_field' => $some_value]);}

如果数据非常宠大,系统可能会耗尽内存,这个方法显然很笨拙。

Laravel 为此提供了一个简洁的解决方案

Laravel 的 chunk 方法可以将集合拆成多个指定大小的小集合

User::chunk(100, function ($users) {  foreach ($users as $user) {    $some_value = ($user->some_field > 0) ? 1 : 0;    $user->update(['some_other_field' => $some_value]);  }});

以上代码运行的原理是:

运行一个 chunk ,这个 chunk 查出100个用户数据,对各个用户数据进行更新

然后再查看100个用户数据,再执行更新操作,依此类推。

这意味着在查询数据时不会从数据库中获取大量数据,每次查询100条数据,而不是整个表。

这样就减轻的系统的压力。

需要注意的地方

本文重点来了:

但是要小心,有过滤结果的不能像这样运行

User::where('approved', 0)->chunk(100, function ($users) {  foreach ($users as $user) {    $user->update(['approved' => 1]);  }});

从代码执行上讲,这个语句并不会引发任何错误

但是这里的问题是,您要过滤approved=0的用户,执行approved=1的数据库操作

然后chunk下一个100条数据,此时数据已经更改,您将错过一页数据。

这意味着您将只处理一半的条目,还有一半漏掉了。

解决方案:

在 Laravel 5.2 之后可以使用 chunkById 方法

在 Laravel 5.2 之前可以参考以下代码

while(User::where('approved', 0)->count() > 0) {    User::where('approved', 0)->chunk(100, function ($users) {      foreach ($users as $user) {        $user->update(['approved' => 1]);      }    });}

关于“laravel的chunk方法如何用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: laravel的chunk方法如何用

本文链接: https://lsjlt.com/news/331508.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • laravel的chunk方法如何用
    这篇文章主要介绍“laravel的chunk方法如何用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“laravel的chunk方法如何用”文章能帮助大家解决问题。在laravel中,chunk()方...
    99+
    2023-06-30
  • laravel的fill方法如何用
    今天小编给大家分享一下laravel的fill方法如何用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在laravel中,f...
    99+
    2023-06-30
  • laravel中的old方法如何用
    这篇“laravel中的old方法如何用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“laravel中的old方法如何用”文...
    99+
    2023-06-29
  • laravel中distinct方法如何用
    本文小编为大家详细介绍“laravel中distinct方法如何用”,内容详细,步骤清晰,细节处理妥当,希望这篇“laravel中distinct方法如何用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在lara...
    99+
    2023-06-30
  • laravel中asset()方法如何用
    本文小编为大家详细介绍“laravel中asset()方法如何用”,内容详细,步骤清晰,细节处理妥当,希望这篇“laravel中asset()方法如何用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。laravel...
    99+
    2023-06-30
  • laravel中has方法如何使用
    这篇文章主要介绍“laravel中has方法如何使用”,在日常操作中,相信很多人在laravel中has方法如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel中has方法如何使用”的疑惑有所...
    99+
    2023-06-22
  • laravel中如何使用with方法
    这篇文章主要为大家展示了“laravel中如何使用with方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“laravel中如何使用with方法”这篇文章吧。在laravel中,with()方法...
    99+
    2023-06-26
  • Laravel中Tinker的使用方法
    这篇文章将为大家详细讲解有关Laravel中Tinker的使用方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Laravel Tinker 的使用Laravel Tinker 简介在原生 PHP 中,可...
    99+
    2023-06-15
  • Laravel中10个实用的方法
    这篇文章将为大家详细讲解有关Laravel中10个实用的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Laravel 中一些常用的用法1. 在 find 方法中指定属性User::find(1,&nb...
    99+
    2023-06-14
  • laravel中的scope如何用
    今天小编给大家分享一下laravel中的scope如何用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在laravel中,s...
    99+
    2023-07-02
  • Laravel的Tinker如何使用
    这篇文章主要介绍“Laravel的Tinker如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel的Tinker如何使用”文章能帮助大家解决问题。Laravel Tinker 的使用...
    99+
    2023-07-04
  • laravel的redis使用方法有哪些
    这篇文章主要介绍“laravel的redis使用方法有哪些”,在日常操作中,相信很多人在laravel的redis使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel的redis使用方法...
    99+
    2023-07-04
  • 如何利用算法提高 Laravel 应用的性能?
    Laravel 是一款流行的 PHP Web 应用程序框架,它提供了许多方便的功能和工具,使得开发 Web 应用程序变得更加容易和快速。然而,当您的应用程序增长时,它可能会遇到性能瓶颈,导致应用程序变慢或崩溃。在这篇文章中,我们将探讨如何使...
    99+
    2023-08-12
    编程算法 load laravel
  • LeetCode算法如何增强Laravel应用的功能?
    Laravel是一款广受欢迎的PHP框架,它提供了强大的功能和易于使用的API,使得开发人员可以更快速、更高效地开发Web应用程序。但是,在处理复杂的数据结构和算法时,Laravel可能会遇到一些挑战。在这种情况下,LeetCode算法可...
    99+
    2023-08-10
    laravel load leetcode
  • Vue开发中出现Loading Chunk Failed的问题如何解决
    本文小编为大家详细介绍“Vue开发中出现Loading Chunk Failed的问题如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue开发中出现Loading Chunk Failed的...
    99+
    2023-06-29
  • laravel中的make方法有什么作用
    本文小编为大家详细介绍“laravel中的make方法有什么作用”,内容详细,步骤清晰,细节处理妥当,希望这篇“laravel中的make方法有什么作用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在larave...
    99+
    2023-06-29
  • Laravel中where的高级使用方法
    这篇文章主要介绍了Laravel中where的高级使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有时候项目中需要进行多个字段搜索就可以用到此方法在Larav...
    99+
    2023-06-08
  • laravel如何使用RabbitMQ
    这篇文章主要介绍“laravel如何使用RabbitMQ”,在日常操作中,相信很多人在laravel如何使用RabbitMQ问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”laravel如何使用RabbitMQ...
    99+
    2023-06-22
  • laravel如何使用websocket
    什么是WebSocket? WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得浏览器和服务器之间的实时通信变得更加容易。与HTTP请求不同,WebSocket连接是持久的,这意味着...
    99+
    2023-08-31
    php laravel websocket
  • Laravel Livewire如何使用
    这篇文章主要讲解了“Laravel Livewire如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel Livewire如何使用”吧!Laravel Livewire是一个...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作