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

Laravel 集合 Collection

我们使用collect 函数从数组中创建集合实例,对其中每个元素运行 strtoupper 函数之后再移除所有的空元素 $collection = collect(['pinux', 'php...2.创建集合 辅助函数 collect 会为给定数组返回一个新 Illuminate\Support\Collection 实例。...也就是说,创建一个集合就这么简单: $collection = collect(['php', 'redis', 'laravel']); 默认情况下, EIoquent查询结果返回内容都是 Collection...#如果集合包含数组或对象,你应该传入你希望连接属性键,以及你希#望放在值之间用来「拼接」字符串 #集合包含简单字符串或数值,只需要传入「拼接」用字符串作为该方法唯一参数即可 collect...如果你想创建集合,就改用 map 方法。 #70.union方法,将给定数组添加集合中。如果给定数组中含有与原集合一样键,则原集合值不会被改变。

5.6K20

Laravel 5.3之 Query Builder 源码解析(中)

createConnection($dsn, $config, $options),该方法实例化了一个PDO,这里就明白了Query Builder也只是在PDO基础封装一层API集合,Query...,重点就是把where()中变量值按照$column, $operator, $value拆解并装入$wheres[ ]属性中,并且$wheres[ ]是一个'table'结构,如果有多个where过滤器...并且,在$bindings[]属性中把where过滤器与值相互绑定存储,如果有多个where过滤器,就类似这样绑定,['where' => [1, 'laravel', ...], ...]。...createConnection($dsn, $config, $options),该方法实例化了一个PDO,这里就明白了Query Builder也只是在PDO基础封装一层API集合,Query...并且,在$bindings[]属性中把where过滤器与值相互绑定存储,如果有多个where过滤器,就类似这样绑定,['where' => [1, 'laravel', ...], ...]。

3.4K31
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel框架集合用法实例浅析

创建集合 $collection = collect([1, 2, 3]); 显而易见,这是一部非常简单操作,请打住你想说“这种操作很复杂”的话,它更类似与早起PHP5.x版本声明方式。...,其使用方法也非常简单 collect([1, 2, 3])- all(); ------ [1, 2, 3] 在不过与考虑性能情况下,可以使用Laravel集合,毕竟它将帮你完成数组操作百分之九十工作...使用集合可以酱紫做~ $collection = collect([1, 2, 3, 4, 5, 6, 7]); $chunks = $collection- chunk(4); $chunks-...diff 将集合与其它集合或纯 PHP 数组进行值比较,然后返回原集合中存在而给定集合中不存在值 each 迭代集合内容并将其传递到回调函数中 filter 使用给定回调函数过滤集合内容,...只留下那些通过给定真实测试内容 first 返回集合中通过给定真实测试第一个元素 groupBy 根据给定键对集合项目进行分组 push 把给定值添加集合末尾 put 在集合内设置给定键值对

2.2K10

你可能需要了解下Laravel集合

创建集合 $collection = collect([1, 2, 3]); 显而易见,这是一部非常简单操作,请打住你想说“这种操作很复杂”的话,它更类似与早起PHP5.x版本声明方式。...,其使用方法也非常简单 collect([1, 2, 3])->all(); ------> [1, 2, 3] 在不过与考虑性能情况下,可以使用Laravel集合,毕竟它将帮你完成数组操作百分之九十工作...使用集合可以酱紫做~ $collection = collect([1, 2, 3, 4, 5, 6, 7]); $chunks = $collection->chunk(4); $chunks->...diff 将集合与其它集合或纯 PHP 数组进行值比较,然后返回原集合中存在而给定集合中不存在值 each 迭代集合内容并将其传递到回调函数中 filter 使用给定回调函数过滤集合内容,...只留下那些通过给定真实测试内容 first 返回集合中通过给定真实测试第一个元素 groupBy 根据给定键对集合项目进行分组 push 把给定值添加集合末尾 put 在集合内设置给定键值对

1.6K30

如何使用 Laravel Collections 类编写神级代码

扩展集合(Extending Collections) Collection 类,同其它 Laravel 组件一样,支持宏(macroable),就是说你可以给它添加方法随后使用。...提示: 如果你希望新方法随处可用,你应该将它们添加到服务提供中。我喜欢创建一个 MacroServiceProvider 实先这个功能,对于你来说随你喜欢就好。...,我们代码基本就完美了: collect($data)->where('age', 'thirties') ->sortBy('last_name')...遗憾是目前集合还不支持正则匹配,所以我们使用 map 方法,不过我们可以为这个功能创建一个宏: Collection::macro('whereRegex', function($expression...需要注意是,通过使用 Collection 类,您不仅可以获得一个方法库来简化编程工作,还可以选择一种从根本改善代码方法。

2.1K20

3分钟短文:Laravel模型集合跟基类真不一样,别混为一谈

引言 laravel在功能拆分上相当灵活,其中查询返回数据集,虽然继承了基类集合, 但是有一些特定方法和用法。很多小白在写时候,往往分不清到底是用哪个类哪个方法,导致凭空报错。...代码时间 laravel系统基类就是 Illuminate\Support\Collection,同时提供了一个快捷助手函数collect 用于实例化一个集合类。...该助手函数代码很简单,就是new一个对象: new Collection($value); 比如有一个数组,将其实例化为一个集合类: $collection = collect([1, 2, 3]);...我们手动创建一个eloquent collection 用于操作query builder返回数据集合。...对于集合序列化操作,其实有很标准写法,比如 toArray toJson这些方法, 可以在返回数据集对象直接调用: $contactArray = Contact::first()->toArray

1K40

基于 Redis 实现 Laravel 广播功能(下):在私有频道和存在频道发布和接收消息

群内某个用户发布了消息,只有这个群内用户才能接收到消息,不可能其他群能收到消息,否则就乱套了,要实现这样功能,需要借助 Laravel 提供私有频道类 PrivateChannel。...在客户端接收存在频道消息 在 Laravel Echo 客户端,我们可以通过 Echo.join 加入某个私有频道返回 PresenceChannel 实例,然后在其基础通过 listen 接收 Websocket...Laravel 应用中使用 Axios 库发送请求,这个请求头会自动设置,如果使用是其他 JavaScript 库,则需要手动设置,你可以这样获取这个 Socket ID: var socketId...另外,你还可以使用 Swoole 实现 Websocket 服务端,学院君之前发布了一个基于 Redis + Swoole + Socket.io 实现 Laravel 在线聊天室项目,可以作为进一步学习参考教程...关于 Laravel 广播组件实现和使用,学院君就简单介绍到这里,下篇教程,我们来探讨如何通过 Redis 实现分布式锁以及该功能在 Laravel 任务调度中应用。

3K30

Laravel系列6.4】管道过滤器

管道过滤器 通过之前三篇文章,我们已经学习完了服务容器相关内容,可以说,服务容器就是整个 Laravel 框架灵魂,从启动第一步开始就是创建容器并且加载所有的服务对象。...如果你跟过我 PHP 设计模式系列的话,那么 责任链模式 很明显就是管道模式在 面向对象 语言中应用呀。 管道模式一般是和过滤器一起使用,什么是过滤器呢?...我们一步步来看。 参数不用多说了吧,stack 是一次返回值,pipe 是当前我们要处理值,也就是当前中间件对象。在这个回调函数中又调用了一层回调函数,并将这两个值通过 use 传递进去。...在 AddTime 处理中,我们使用是 后置 中间件功能,也就是在中间件完成处理后再添加内容。这个在中间件相关课程中我们也已经讲过了。 接下来,就是使用管道来进行处理。...大家可以在这里设置断点然后进入到 Pipeline 中查看这些中间件是如何调用运行,为什么要使用 array_reverse() 反转中间件顺序,为什么后置中间件会在最后才去添加数据内容。

4.1K20

Laravel源码笔记(二)路由

); 也可以在请求方式前添加一些路由属性如domain\prefix\middleware等,称为前置属性;还可以在请求方式之后添加一些路由约束where或者属性name等。...()\post()等接口中创建Route实例并添加到自身routes数组中。...在创建路由实例过程中,Router进行工作主要包括给路由控制器添加namespace,给路由uri添加groupprefix前缀,更新路由属性信息,为路由添加router-pattern 正则约束...实际是一个特殊RouteCollection集合,里面存放路由方式有[domain][method]二级索引和[domain.method]单级索引两种。...如果未在指定方法下找到route匹配,则遍历其它方法下路由集合进行匹配,并将所有匹配路由对应methods记录,然后判断请求方式是否为OPTIONS: 如果是,返回一个响应OPTIONS方法new

7.4K40

Laravel 5.0 之 Middleware (Filter-Style)

本文译自 Matt Stauffer 系列文章. ---- 如果你有阅读我之前 Laravel 5.0 系列文章,你可能已经注意到路由过滤器(route filters)变化:它们先是移到了单独目录和类结构...你可能还留意到在原本应该是路由过滤器地方,变成了对 Middleware 引用。 实际Laravel 应用添加自定义 Middleware 在以前版本中就有了。...提示:过滤器Laravel 核心代码中依然存在,所以你依然可以使用。但是在需要对路由进行修饰时,更推荐采用是 middleware. Middleware 是什么?...Laravel 默认使用 middleware 来处理加密/解密和 cookies 队列、读取和写入 sessions, 但除此之外你还可以用 middleware 来向请求/响应环中加入你需要任何一种操作层...你可能注意到了,新 Kernel 类有两个属性: $middleware 和 $routeMiddleware. 这两个属性都是 middleware 为元素数组。

2K40

Laravel之collection

collect($arr)->pluck('order_products.*.price')->flatten(1)->sum(); 二、 格式化登机口 希望加深 map 理解和 map 应用场景...五、计算每月营业额 在之前示例当中,我们都是对一个数组进行优化和重构。这节学习使用 zip 方法来解决两个数组情况。 ? ? ? ?...六、reduce 创建 lookup 数组 在 Laravel Collection 当中,还有一个非常常用方法:reduce,这对于我们在创建 lookup 数组时候非常有用,这样就可以使用...或者: collect($employees)->pluck('email','name') 七、计算订单汇总 在处理订单问题时候,会遇到各种各样汇总问题,比如每天销售额汇总,每天供应商汇总等...参考教程:用 Collection 重构代码 参考文档:Laravel 集合 Collection

1.2K40

基于 Redis 布隆过滤器实现海量数据去重及其在 PHP 爬虫系统中应用

那 Redis 是否为此提供了确保高性能同时又减少存储空间解决方案呢? 还真有,对于这种去重场景,我们可以使用布隆过滤器来解决,它可以用于判断某个元素是否存在于指定集合中。...布隆过滤器基本使用和底层实现 基本使用 我们可以通过 bf.add 指令添加元素到集合使用 bf.exists 检查元素是否存在: 当然,也可以通过 bf.madd 指令批量添加元素到集合,然后使用...bf.mexists 检查多个元素是否存在: 要删除布隆管理器集合使用 Redis DEL 指令即可。...每个布隆过滤器对应到 Redis 底层数据结构就是一个大型位数组和一系列无偏哈希函数(所谓无偏就是能够把元素哈希值算得比较均匀): 向布隆过滤器添加键值对时,会使用这一系列哈希函数分别对键名进行哈希运算...; } } 这里我们在首次爬取某个 URL 时通过 RedisBloom 提供 bf.add 指令将其添加到布隆过滤器集合(这里没有误差),如果通过 bf.exists 判断某个链接已处理,

1.9K11

Laravel 5.3之 Query Builder 源码解析(中)

MySqlConnection构造参数注入,上篇中重点谈到通过createPdoResolver($config)获取到闭包函数作为参数注入到该MySqlConnection,而\Illuminate...开发环境:Laravel5.3 + PHP7 数据库连接器 连接工厂类ConnectionFactory中通过简单工厂方法实例化了MySqlConnection,看下该connection构造函数:...,是在后续执行SQL语句时调用Connection::select()执行,之前Laravel版本是没有封装在闭包里而是先执行了连接操作,Laravel5.3是封装在了闭包里等着执行SQL语句再连接操作...$this; } 只是简单赋值给$from属性,并返回Builder对象,这样就可以实现fluent api。...,重点就是把where()中变量值按照column, operator, value拆解并装入wheres[ ]属性中,并且wheres[ ]是一个'table'结构,如果有多个where过滤器,就在

3.2K31

laravel 学习之路 Collections

这就要了解下 Collections 对象,在 laravel 中 collection 是比数组更高等般存在,我们可以像对待数组一样来操作 collection,而且它还能以链式操作方式便捷易读处理数据...u', '啦', 'p', '主', '真', '帅', false, null]; # 打印创建数组 dump($array); # 把创建数组转为...操作再复杂点都用函数一层一层套的话就很崩溃了还是链式操作即直观又美观,为什么说 laravel 便是如此咯。 collection 其实有一大堆功能可以供我们使用 ?...回到刚刚的话题由于从数据库取出数据本身就是一个 collection 所以可以直接使用这些方法 function getCollectData(){ $titles = DB:...up 17年刚刚接触 laravel 时候不知道 collection 是个啥,只知道数组数据库查出来时候都懵逼了百度半天才知道 ->toArray() 可以把 collection 转成数组,每次都是转成数组玩

77330

Redis 分布式锁在 Laravel 任务调度底层实现中应用

Laravel 任务调度入口代码 可以看到,Laravel 调度任务基本使用非常简单,下面我们来看看它底层是如何实现,以及这与我们所要介绍 Redis 分布式锁又有何关联。...events 数组属性。...我们回到 Schedule dueEvents 方法继续往下看,当获取到所有有效调度任务集合后,接下来,会基于高阶消息传递调用每个调度任务对象(Event) isDue 方法: public...再回到上一层 ScheduleRunCommand handle 方法,获取到所有当前可以执行调度任务后,对于循环遍历每一个调度任务对象,先运行对象实例(Event) filtersPass... add 方法,该方法只有在缓存键尚不存在时候才会添加成功,如果键已存在,则返回 false: public function add($key, $value, $seconds) {

6.2K21

Lambda表达式和函数式编程

Optional 该类型方法既主要在lambda函数式编程中处理空值情况 三.流创建方式 1.数组转流(Arrays.stream()) int[] a = {1, 2, 3}; Arrays.stream....任意类型对象转流(Stream.Of()) 添加不同类型对象会变成一个Object类型流 Stream.of(1,2,3).peek(e -> log.info(e)).collect(Collectors.toList...()).collect(Collectors.toList()); flatMap():参数是流,主要使用场景是处理高阶嵌套流,将高阶流扁平化。...例如:父子对象常见集合属性 第一个应用场景:一个用户可能有多重角色,典型一对多父子类型 userList.stream().flatMap(user -> user.getRoles().stream...对象方式 因为其构造方法是私有的,所以只能通过静态构造器来创建Optional对象 Optional.

1.2K30

Laravel 5.0 发布, 海量新特性!!

目录结构更有利于用 Laravel创建应用. 5.0 版从头到尾都采用了新 PSR-4 自动加载标准....该仓库没有额外依赖项. 拥有这样一个方便, 集中存放接口集合, 你就可以很容易地通过它来对 Laravel Facades 进行解耦和依赖注入方面的选择和修改....路由中间件 (Route Middleware) 在 4.0 版风格路由 "过滤器" 基础, 新版 5.0 已经支持 HTTP 中间件, Laravel 自带 "authentication" 和...因为定时任务并不包括在网站源代码中, 而且必须通过 SSH 登陆到服务器去添加 Cron 任务....新版 Laravel 定时任务允许开发者在 Laravel 框架内来定义定时执行命令, 然后只需要在服务器定义一个总 Cron 任务即可.

4.1K60
领券