### 生成子查询 $subQuery = $model::from('bracelet_information as in')->join('users', 'users.id', '=', 'in.uid') ->select($fields)->where($where)->forPage($page, $perPage) ->groupBy($fields); 或者在增加一步`getQuery`操作,同样可以使用 $subQuery = $subQuery->getQuery(); ### 子查询的sql语句 $sql = $subQuery->toSql(); ### 使用子查询 使用子查询必须绑定`mergeBindings`操作`->mergeBindings($subQuery->getQuery())` $count = DB::table(DB::raw("({$subQuery->toSql()}) as sub"))->mergeBindings($subQuery->getQuery())->count(); 如果不绑定,很多时候不能操作成功的
  • flatMap方法:处理集合所有的项目
  • mapWithKeys方法 遍历集合并将每个值传入给定的回调。回调应该返回包含一个键值对的关联数组
  • pipe方法 将集合传给给定的回调并返回结果【或许很少使用】
  • pop方法 移除并返回集合中的最后一个项目
  • prepend方法 将给定的值添加到集合的开头
  • pull方法 把给定键对应的值从集合中移除并返回
  • push方法 把给定值添加到集合的末尾
  • put方法 在集合内设置给定的键值对
  • shift方法 移除并返回集合的第一个项目
  • splice方法 删除并返回从给定值后的内容,原集合也会受到影响
  • take方法 返回给定数量项目的新集合
  • tap方法 将集合传递给回调【或许很少使用】
  • transform方法 迭代集合并对集合内的每个项目调用给定的回调
  • concat 方法在集合的末端附加指定的 数组 或集合值:
  • eachSpread 方法用于循环集合项,将每个嵌套集合项的值传递给回调函数:
  • mapInto() 方法可以迭代集合,通过将值传递给构造函数来创建给定类的新实例:
  • mapSpread 方法可以迭代集合,将每个嵌套项值给指定的回调函数。该回调函数可以自由修改该集合项并返回,从而生成被修改过集合项的新集合
  • mapToGroups 方法通过给定的回调函数对集合项进行分组。该回调函数应该返回一个包含单个键 / 值对的关联数组,从而生成一个分组值的新集合
  • pipeInto 方法创建一个给定类的新实例,并将集合传递给构造函数
  • replace 方法类似于 merge ;不过, replace 不仅可以覆盖匹配到的相同字符串键的元素,而且也可以覆盖匹配到数字键的元素:
  • replaceRecursive 这个方法类似 replace ,但是会以递归的形式将数组替换到具有相同键的元素中:
  • diff方法
  • diffAssoc方法
  • diffKeys方法
  • except方法:返回排除的元素的集合
  • filter方法:按一定条件过滤元素
  • first方法:第一个满足添加的元素
  • get方法 获取指定的元素
  • intersect方法 从原集合中返回给定数组或集合中的值,最终的集合会保留原集合的键
  • intersectKey方法 返回原集合中存在于给定数组或集合中的元素
  • last方法 返回集合中通过给定测试的最后一个元素
  • only方法 返回集合中给定键的所有项目
  • reject方法 使用指定的回调过滤集合。如果回调返回 true ,就会把对应的项目从集合中移除
  • search方法 搜索给定的值并返回它的键。如果找不到,则返回 false
  • slice方法 返回集合中给定值后面的部分
  • when方法 当传入的第一个参数为 true 的时,将执行给定的回调
  • where方法 通过给定的键值过滤集合
  • whereStrict方法
  • whereIn方法 通过给定的键值数组来过滤集合
  • whereInStrict方法
  • whereNotIn方法 通过集合中不包含的给定键值对进行
  • whereNotInStrict方法
  • zip方法 将给定数组的值与相应索引处的原集合的值合并在一起
  • firstWhere 方法返回集合中含有指定键 / 值对的第一个元素:
  • skipWhile 方法当回调函数返回 true 时跳过元素,然后返回集合中剩余的元素
  • takeWhile 方法将返回集合中的元素直到给定的回调函数返回 false
  • unless 法当传入的第一个参数不为 true 的时候,将执行给定的回调函数
  • unlessEmpty()
  • unlessNotEmpty()
  • 静态 unwrap 方法返回集合内部的可用元素:
  • whenEmpty 方法是当集合为空时,将执行给定的回调函数:
  • whenNotEmpty 方法当集合不为空时,将执行给定的回调函数:
  • whereBetween 方法会筛选给定范围的集合
  • whereInstanceOf 方法根据给定的类来过滤集合:
  • whereNotBetween 方法在指定的范围内过滤集合
  • whereNotNull 方法筛选给定键不为 NULL 的项:
  • whereNull 方法筛选给定键为 NULL 的项
  • 集合操作方法
  • avg方法:平均值
  • count方法
  • max方法 返回给定键的最大值
  • median方法 方法返回给定键的中间值
  • min方法 返回给定键的最小值
  • mode方法 返回给定键的众数值
  • sum方法 返回集合内所有项目的总和
  • countBy 方法计算集合中每个值的出现次数。默认情况下,该方法计算每个元素的出现次数:
  • all方法
  • chuck方法:拆分成新集合
  • combine方法:将一个数组作为键另一个数组作为值组合新数组
  • collapse方法:合并成新集合
  • flatten方法 将多维集合转为一维
  • flip方法 将集合中的键和对应的数值进行互换
  • forget方法 通过给定的键来移除掉集合中对应的内容
  • forPage方法 分页展示数据
  • groupBy方法 按某个元素的键的值进行分组
  • keyBy方法 用指定某个键的值作为新集合的键
  • implode方法 合并某个键的值
  • keys方法 返回集合的所有键
  • merge方法 将给定数组或集合合并到原集合
  • nth方法 创建由每隔n个元素组成一个新的集合
  • partition方法 可以和 PHP 中的 list() 方法结合使用,来分开通过指定条件的元素以及那些不通过指定条件的元素
  • pluck方法 获取集合中给定键对应的所有值
  • random方法 从集合中返回一个随机项
  • reduce方法 将每次迭代的结果传递给下一次迭代直到集合减少为单个值
  • reverse方法 倒转集合中项目的顺序
  • shuffle方法 随机排序集合中的项目
  • sort方法 对集合进行排序
  • sortBy方法 以给定的键对集合进行排序
  • sortByDesc方法 与 sortBy 方法一样,但是会以相反的顺序来对集合进行排序
  • split方法 将集合按给定的值拆分
  • times方法 通过回调在给定次数内创建一个新的集合
  • toArray方法 将集合转换成 PHP 数组
  • toJson方法 将集合转换成 JSON 字符串
  • union方法 将给定的数组添加到集合中
  • unique方法 返回集合中所有唯一的项目
  • uniqueStrict方法
  • values方法 返回键被重置为连续编号的新集合
  • chunkWhile 方法根据指定的回调值把集合分解成多个更小的集合:
  • crossJoin 方法交叉连接指定数组或集合的值,返回所有可能排列的笛卡尔积:
  • duplicates 方法从集合中检索并返回重复的值:
  • duplicatesStrict()
  • join 方法会将集合中的值用字符串连接:
  • mergeRecursive 方法以递归的形式合并给定的数组或集合到原集合中,如果给定集合项的字符串键与原集合的字符串键一致,则会将给定的集合项的值以递归的形式合并到原集合的相同键中
  • pad 方法将使用给定的值填充数组,直到数组达到指定的大小
  • skip 方法返回除了给定的元素数目的新集合:
  • skipUntil 方法将跳过元素直到给定的回调函数返回 true,然后返回集合中剩余的元素
  • sortKeys 方法通过底层关联数组的键来对集合进行排序:
  • sortKeysDesc 该方法与 sortKeys 方法一样,但是会以相反的顺序来对集合进行排序。
  • splitIn 方法将集合分为给定数量的组,在将其余部分分配给最终组之前,完全填充非终端组:
  • takeUntil 方法将返回集合中的元素,直到给定的回调函数返回 true
  • wrap 方法会将给定值封装到集合中
  • 判断元素是否存在
  • contains方法:判断指定的元素是否存在
  • containsStrict方法:严格判断指定元素是否存在
  • every方法:验证集合中每一个元素都通过给定测试
  • has方法 判断键值是否存在
  • isEmpty() 如果集合为空, isEmpty 方法返回 true ,否则返回 false :
  • isNotEmpty() 如果集合不为空,isNotEmpty 方法返回 true ,否则返回 false :
  • 问题与技巧
  • 两个集合合并concat
  • 队列消息常用命令
  • 创建队列消息
  • 队列程序中常用参数
  • 一篇文章带你彻底搞懂 Laravel 框架的底层运行原理!!!
  •