* @return \Illuminate\Support\Collection
|
static
public
function
map
(
callable
$callback
)
$result
=
parent::map
(
$callback
)
;
return
$result
-
>
contains
(
function
(
$item
)
{
return
!
$item
instanceof Model
;
}
)
?
$result
-
>
toBase
(
)
:
$result
;
// 其中 parent::map
(
$callback
)
;
* Run a map over each of the items.
* @param callable
$callback
* @return static
public
function
map
(
callable
$callback
)
$keys
=
array_keys
(
$this
-
>
items
)
;
$items
=
array_map
(
$callback
,
$this
-
>
items,
$keys
)
;
return
new static
(
array_combine
(
$keys
,
$items
))
;
// Creates an array by using one array
for
keys and another
for
its values
function
array_combine
(
array
$keys
, array
$values
)
{
}
从中可以看出,map返回一个新的集合,其中的值为回调函数处理过后的数据
Each()
* Execute a callback over each item.
* @param callable
$callback
* @return
$this
public
function
each
(
callable
$callback
)
foreach
(
$this
as
$key
=
>
$item
)
{
if
(
$callback
(
$item
,
$key
)
==
=
false
)
{
break
;
return
$this
;
而each返回的还是原集合,只是以遍历的形式对原集合进行回调函数中的处理,
由上可以看出,
each()通常用在循环操作,map()用在集合数据格式转换
两者都是对集合进行遍历处理Map() /** * Run a map over each of the items. * * @param callable $callback * @return \Illuminate\Support\Collection|static */ public function map(callable $callback) { $result = parent::map($cal
数据集合,就是已经将模型方法 get()获取到的数据再进行处理;
比如:
map
()方法,通过它可以实现类似访问器一样对字段进行处理的效果;
$users = User::get();
//使用集合方法
map
可以对输出的字段进行过滤
$women = $users->
map
(function ($user) {
$user->email = strtoupper($user->email);
return $user;
//以下数据遍历第一次的时候,修改$item新增属性node_type,会影响第二次编辑的$item中也会node_type属性
$collect->
map
(function($item){
$item->node_type=$item->type...
集合是一个很好用的数据类型,在 PHP 中我们常常使用数组来处理数据,而
laravel
提供了许多集合封装好的方法来处理数据,许多数组做不到或者处理比较繁琐的,集合却可以轻易做到,可以让我们少些一些处理数据的方法。
使用方法:
collect() 创建集合
辅助函数 collect 为给定数组返回一个新的 Illuminate\Support\Collection 实例
$collection = collect([
'user_id' => '1',
$corner_mark = [];
$corner_mark_id = 0;
$model->cornerMark->each(function ($relationValue) use (&$corner_mark, &$corner_mark_id) {
composer create-project
laravel
/
laravel
项目文件夹名 --prefer-dist
二、领导:简单的给我介绍一下这些主要目录及文件的意思吧!
app:应用程序的核心代码
bootstrap:一个引导框架的app.php文件,一个cache目录(包含路由及缓存文件),框架启动文件,一般情况不动。
config:所有配置文件
database:其中
最近PHP 版本升级了7.4,之后用composer下载
Laravel
,发现已经更新到8了,然后就试下看着文档操作,看看有啥不一样!
官方文档重点说了
Laravel
Jetstream,这是一个UI 的脚手架。一般情况下,如果我需要写前端,我会单独分开写的,不会用到
Laravel
的脚手架,包括那个资源整合Mix,也不用,所以这个更新其实对我影响不大!忽略
写法上,暂时发现有些地方有变化
以前写法:
Route::get('/', 'HomeController@ind...
laravel
5.5对collection进行了大力的加持,时刻保持自己获取到的数据的类型是collection 而非array是很明智的选择
所以Collection each 函数就会经常用到了
The each method iterates over the items in the colle...