>PHP 프레임워크 >Laravel >15가지 멋진 Laravel 수집 방법

15가지 멋진 Laravel 수집 방법

青灯夜游
青灯夜游앞으로
2022-12-06 20:44:341775검색

15가지 멋진 Laravel 수집 방법

15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법 Eloquent는 일반적으로 결과로 컬렉션을 반환하며 컬렉션에는 유용하고 강력한 메서드가 많이 포함되어 있습니다. 컬렉션을 쉽게 필터링하고 수정할 수 있습니다. 이번 튜토리얼에서는 컬렉션의 일반적인 메소드와 기능을 살펴보겠습니다.

컬렉션(collection)은 웅변에만 국한되지 않고 단독으로도 사용할 수 있습니다. 그러나 Eloquent의 결과는 컬렉션입니다. 도우미 함수 collect를 사용하여 배열을 컬렉션으로 변환할 수 있습니다. 아래에 나열된 수집 방법은 수집 자체뿐만 아니라 설득력 있는 결과에도 적용됩니다. [관련 권장사항: laravel 동영상 튜토리얼]collect 将数组转化为集合。下面所列出的集合的方法适用于 eloquent 结果的同时也适用于集合本身。【相关推荐:laravel视频教程

比方说,你有一个帖子模型。 你找到所有 php 类别的帖子。

$posts = App\Post::where('category', 'php')->get();

上面的命令返回一个集合。 集合是一个laravel类,它在内部使用数组函数并为它们添加许多功能。

你可以简单的使用 collect 方法创建一个集合,如下:

$collection = collect([
    [
        'user_id' => '1',
        'title' => 'Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법',
        'content' => 'Create custom helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법',
        'category' => 'php'
    ],
    [
        'user_id' => '2',
        'title' => 'Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법',
        'content' => 'Testing File Uploads in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법',
        'category' => 'php'
    ],
    [
        'user_id' => '3',
        'title' => 'Telegram Bot',
        'content' => 'Crypto Telegram Bot in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법',
        'category' => 'php'
    ],
]);

上面的数组实际上是 Post 模型的值。 在本教程中,我们将使用此数组进行简化。 请记住,一切都将以同样的方式基于 eloquent。

当我们在 eloquent 集合上使用辅助方法时,不会再查询数据库。 我们首先要从数据库中获取所有结果,然后我们使用集合方法来过滤和修改它们,而无需查询数据库。

filter()

filter,最有用的 laravel 集合方法之一,允许您使用回调过滤集合。 它只传递那些返回true的项。 所有其他项目都被删除。 filter 返回一个新实例而不更改原始实例。 它接受 valuekey 作为回调中的两个参数。

$filter = $collection->filter(function($value, $key) {
    if ($value['user_id'] == 2) {
        return true;
    }
});

$filter->all();

all 方法返回底层数组。 上面的代码返回以下响应。

[
    1 => [
        "user_id" => 2,
        "title" => "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "content" => "Testing File Uploads in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ]
]

search()

search 方法可以用给定的值查找集合。如果这个值在集合中,会返回对应的键。如果没有数据项匹配对应的值,会返回 false

$names = collect(['Alex', 'John', 'Jason', 'Martyn', 'Hanlin']);

$names->search('Jason');

// 2

search 方法默认使用松散比较。你可以在它的第二个参数传 true 使用严格比较。

你也可以传你自己的回调函数到 search 方法中。将返回通过回调真值测试的第一个项的键。

$names = collect(['Alex', 'John', 'Jason', 'Martyn', 'Hanlin']);

$names->search(function($value, $key) {
    return strlen($value) == 6;
});

// 3

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
    ]
]

dump()

dump 打印集合的方法。 它可用于在任何位置的调试和查找集合内的内容。

$collection->whereIn('user_id', [1, 2])
    ->dump()
    ->where('user_id', 1);

dump 上述代码结果。

15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법

map()

map 方法用于遍历整个集合。 它接受回调作为参数。 valuekey 被传递给回调。 回调可以修改值并返回它们。 最后,返回修改项的新集合实例。

$changed = $collection->map(function ($value, $key) {
    $value['user_id'] += 1;
    return $value;
});

return $changed->all();

基本上,它将 user_id 增加1。

上面代码的响应如下所示。

[
    [
        "user_id" => 2,
        "title" => "Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "content" => "Create custom helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ],
    [
        "user_id" => 3,
        "title" => "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "content" => "Testing File Uploads in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ],
    [
        "user_id" => 4,
        "title" => "Telegram Bot",
        "content" => "Crypto Telegram Bot in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ]
];

zip()

Zip 方法会将给定数组的值与集合的值合并在一起。相同索引的值会添加在一起,这意味着,数组的第一个值会与集合的第一个值合并。在这里,我会使用我们在上面刚刚创建的集合。这对 Eloquent 集合同样有效。

$zipped = $collection->zip([1, 2, 3]);

$zipped->all();

JSON 响应会像这样。

15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법

所以,基本上就是这样。如果数组的长度小于集合的长度,15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법 会给剩下的 Collection 类型的元素末尾添加 null。类似地,如果数组的长度比集合的长度大,15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법 会给 Collection 类型的元素添加 null,然后再接着数组的值。

whereNotIn()

您可以使用 whereNotIn 方法简单地按照给定数组中未包含的键值过滤集合。 它基本上与 whereIn 相反。 此外,此方法在匹配值时使用宽松比较 ==

让我们过滤 $collection,其中 user_id 既不是 1 也不是 2的。

$collection->whereNotIn('user_id', [1, 2]);

上面的语句将只返回 $collection

예를 들어 게시물이 있습니다. 모델. php 카테고리의 모든 게시물을 찾았습니다. 🎜
$collection->max('user_id');
🎜위 명령은 컬렉션을 반환합니다. Collection은 내부적으로 배열 함수를 사용하고 여기에 많은 기능을 추가하는 laravel 클래스입니다. 🎜🎜다음과 같이 간단히 collect 메서드를 사용하여 컬렉션을 만들 수 있습니다. 🎜
$title = $collection->pluck('title');
$title->all();
🎜위 배열은 실제로 Post 모델의 값입니다. 이 튜토리얼에서는 단순화를 위해 이 배열을 사용합니다. 모든 것이 같은 방식으로 웅변을 기반으로 한다는 것을 기억하십시오. 🎜🎜웅변 컬렉션에 도우미 메서드를 사용하면 데이터베이스가 더 이상 쿼리되지 않습니다. 먼저 데이터베이스에서 모든 결과를 얻으려는 다음 수집 방법을 사용하여 데이터베이스에 쿼리하지 않고 결과를 필터링하고 수정합니다. 🎜

filter()

🎜filter는 가장 유용한 라라벨 수집 방법 중 하나를 사용하면 콜백을 사용하여 컬렉션을 필터링할 수 있습니다. true를 반환하는 항목만 전달합니다. 다른 모든 항목은 삭제됩니다. filter는 원래 인스턴스를 변경하지 않고 새 인스턴스를 반환합니다. 콜백의 두 매개변수로 valuekey를 허용합니다. 🎜
[
  "Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
  "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
  "Telegram Bot"
]
🎜all 메소드는 기본 배열을 반환합니다. 위의 코드는 다음 응답을 반환합니다. 🎜
$title = $collection->pluck('user_id', 'title');
$title->all();

search()

🎜search 메소드는 주어진 값으로 컬렉션을 검색할 수 있습니다. 값이 컬렉션에 있으면 해당 키가 반환됩니다. 해당 값과 일치하는 데이터 항목이 없으면 false가 반환됩니다. 🎜
[
    "Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법" => 1,
    "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법" => 2,
    "Telegram Bot" => 3
]
🎜search 방법은 기본적으로 느슨한 비교를 사용합니다. 엄격한 비교를 사용하려면 두 번째 매개변수에 true를 전달하면 됩니다. 🎜🎜또한 자신만의 콜백 함수를 search 메소드에 전달할 수도 있습니다. 콜백의 진실성 테스트를 통과한 첫 번째 항목의 키를 반환합니다. 🎜
$collection->each(function ($item, $key) {
    info($item['user_id']);
});

chunk()

🎜chunk 메서드는 컬렉션을 지정된 크기의 여러 개의 작은 컬렉션으로 분할합니다. 컬렉션을 그리드에 표시하는 데 매우 유용합니다. 🎜
$posts = App\Post::all();

$posts->each(function ($item, $key) {
    // Do something
});
🎜위 코드는 효과를 생성합니다. 🎜
$collection->each(function ($item, $key) {
    // Tasks
    if ($key == 1) {
        return false;
    }
});

dump()

🎜dump 컬렉션을 인쇄하는 메서드입니다. 어느 위치에서나 컬렉션 내의 콘텐츠를 디버깅하고 찾는 데 사용할 수 있습니다. 🎜
$collection->whereNotIn('user_id', 3)
    ->tap(function ($collection) {
        $collection = $collection->where('user_id', 1);
        info($collection->values());
    })
    ->all();
🎜dump 위 코드 결과입니다. 🎜🎜15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법🎜

map()

🎜map 메소드는 전체 컬렉션을 탐색하는 데 사용됩니다. 콜백을 매개변수로 받아들입니다. 가 콜백에 전달됩니다. 콜백은 값을 수정하고 반환할 수 있습니다. 마지막으로 수정된 항목의 새 컬렉션 인스턴스가 반환됩니다. 🎜
[
    [
        "user_id" => "1",
        "title" => "Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "content" => "Create custom helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ],
    [
        "user_id" => "2",
        "title" => "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "content" => "Testing File Uploads in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ]
]
🎜기본적으로 user_id가 1씩 증가합니다. 🎜🎜위 코드의 응답은 아래와 같습니다. 🎜
$collection->pipe(function($collection) {
    return $collection->min('user_id');
});

zip()

🎜Zip 메소드는 주어진 배열의 값을 컬렉션의 값과 병합합니다. 동일한 인덱스를 가진 값이 함께 추가됩니다. 즉, 배열의 첫 번째 값이 컬렉션의 첫 번째 값과 병합됩니다. 여기서는 위에서 만든 컬렉션을 사용하겠습니다. 이는 Eloquent 컬렉션에도 적용됩니다. 🎜
$contains = collect(['country' => 'USA', 'state' => 'NY']);

$contains->contains('USA');
// true

$contains->contains('UK');
// false
🎜JSON 응답은 다음과 같습니다. 🎜🎜15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법🎜🎜그래서 기본적으로는 그게 다입니다. 배열의 길이가 컬렉션의 길이보다 작으면 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법은 나머지 Collection 유형 요소의 끝에 null을 추가합니다. 마찬가지로, 배열의 길이가 컬렉션의 길이보다 길면 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법은 Collection 유형 요소에 null을 추가하고 그 뒤에 배열 값을 추가합니다. 🎜

whereNotIn()

🎜 whereNotIn 메서드를 사용하면 주어진 배열에 포함되지 않은 키 값으로 컬렉션을 간단히 필터링할 수 있습니다. 기본적으로 whereIn과 반대입니다. 또한 이 방법은 값을 일치시킬 때 완화된 비교 ==를 사용합니다. 🎜🎜user_id12도 아닌 $collection을 필터링해 보겠습니다. 🎜
$collection->contains('user_id', '1');
// true

$collection->contains('title', 'Not Found Title');
// false
🎜위 명령문은 $collection의 마지막 항목만 반환합니다. 첫 번째 매개변수는 키이고 두 번째 매개변수는 값 배열입니다. eloquent의 경우 첫 번째 매개변수는 열 이름이 되고 두 번째 매개변수는 값 배열이 됩니다. 🎜

max()

max 方法返回给定键的最大值。 你可以通过调用max来找到最大的 user_id。 它通常用于价格或任何其他数字之类的比较,但为了演示,我们使用 user_id。 它也可以用于字符串,在这种情况下,Z> a

$collection->max('user_id');

上面的语句将返回最大的 user_id,在我们的例子中是 3

pluck()

pluck 方法返回指定键的所有值。 它对于提取一列的值很有用。

$title = $collection->pluck('title');
$title->all();

结果看起来像这样。

[
  "Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
  "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
  "Telegram Bot"
]

使用 eloquent 时,可以将列名作为参数传递以提取值。 pluck 也接受第二个参数,对于 eloquent 的集合,它可以是另一个列名。 它将导致由第二个参数的值作为键的集合。

$title = $collection->pluck('user_id', 'title');
$title->all();

结果如下:

[
    "Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법" => 1,
    "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법" => 2,
    "Telegram Bot" => 3
]

each()

each 是一种迭代整个集合的简单方法。 它接受一个带有两个参数的回调:它正在迭代的项和键。 Key 是基于 0 的索引。

$collection->each(function ($item, $key) {
    info($item['user_id']);
});

上面代码,只是记录每个项的 user_id

在迭代 eloquent 集合时,您可以将所有列值作为项属性进行访问。 以下是我们如何迭代所有帖子。

$posts = App\Post::all();

$posts->each(function ($item, $key) {
    // Do something
});

如果回调中返回 false,它将停止迭代项目。

$collection->each(function ($item, $key) {
    // Tasks
    if ($key == 1) {
        return false;
    }
});

tap()

tap() 方法允许你随时加入集合。 它接受回调并传递并将集合传递给它。 您可以对项目执行任何操作,而无需更改集合本身。 因此,您可以在任何时候使用tap来加入集合,而不会改变集合。

$collection->whereNotIn('user_id', 3)
    ->tap(function ($collection) {
        $collection = $collection->where('user_id', 1);
        info($collection->values());
    })
    ->all();

在上面使用的 tap 方法中,我们修改了集合,然后记录了值。 您可以对 tap 中的集合做任何您想做的事情。 上面命令的响应是:

[
    [
        "user_id" => "1",
        "title" => "Helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "content" => "Create custom helpers in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ],
    [
        "user_id" => "2",
        "title" => "Testing in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "content" => "Testing File Uploads in 15가지 멋진 15가지 멋진 15가지 멋진 15가지 멋진 Laravel 수집 방법 수집 방법 수집 방법 수집 방법",
        "category" => "php"
    ]
]

你可以看到 tap 不会修改集合实例。

pipe()

pipe 方法非常类似于 tap 方法,因为它们都在集合管道中使用。 pipe 方法将集合传递给回调并返回结果。

$collection->pipe(function($collection) {
    return $collection->min('user_id');
});

上述命令的响应是 1。 如果从 pipe回调中返回集合实例,也可以链接其他方法。

contains()

contains 方法只检查集合是否包含给定值。 只传递一个参数时才会出现这种情况。

$contains = collect(['country' => 'USA', 'state' => 'NY']);

$contains->contains('USA');
// true

$contains->contains('UK');
// false

如果将 键 / 值 对传递给 contains 方法,它将检查给定的键值对是否存在。

$collection->contains('user_id', '1');
// true

$collection->contains('title', 'Not Found Title');
// false

您还可以将回调作为参数传递给回调方法。 将对集合中的每个项目运行回调,如果其中任何一个项目通过了真值测试,它将返回 true 否则返回 false

$collection->contains(function ($value, $key) {
    return strlen($value[&#39;title&#39;]) < 13;
});
// true

回调函数接受当前迭代项和键的两个参数值。 这里我们只是检查标题的长度是否小于13。在 Telegram Bot 中它是12,所以它返回 true

forget()

forget 只是从集合中删除该项。 您只需传递一个键,它就会从集合中删除该项目。

$forget = collect([&#39;country&#39; => &#39;usa&#39;, &#39;state&#39; => &#39;ny&#39;]);

$forget->forget(&#39;country&#39;)->all();

上面代码响应如下:

[
    "state" => "ny"
]

forget 不适用于多维数组。

avg()

avg 方法返回平均值。 你只需传递一个键作为参数,avg 方法返回平均值。 你也可以使用 average 方法,它基本上是 avg 的别名。

$avg = collect([
    [&#39;shoes&#39; => 10],
    [&#39;shoes&#39; => 35],
    [&#39;shoes&#39; => 7],
    [&#39;shoes&#39; => 68],
])->avg(&#39;shoes&#39;);

上面的代码返回 30 ,这是所有四个数字的平均值。 如果你没有将任何键传递给avg 方法并且所有项都是数字,它将返回所有数字的平均值。 如果键未作为参数传递且集合包含键/值对,则 avg 方法返回 0。

$avg = collect([12, 32, 54, 92, 37]);

$avg->avg();

上面的代码返回 45.4,这是所有五个数字的平均值。

您可以使用这些 laravel 集合方法在您自己的项目中处理集合。

原文地址:https://tutsforweb.com/15-laravel-collection-methods/

译文地址:https://learnku.com/laravel/t/27647

更多编程相关知识,请访问:编程入门!!

위 내용은 15가지 멋진 Laravel 수집 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제