国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

十五個常用的 Laravel 集合(Collection)

alphahans / 2856人閱讀

摘要:將返回通過回調(diào)真值測試的第一個項的鍵。方法將集合分割為多個給定大小的較小集合。它可用于在任何位置的調(diào)試和查找集合內(nèi)的內(nèi)容。方法用于遍歷整個集合。這對集合同樣有效。它將導(dǎo)致由第二個參數(shù)的值作為鍵的集合。它接受回調(diào)并傳遞并將集合傳遞給它。

文章轉(zhuǎn)自:https://learnku.com/laravel/t... 

Laravel Eloquent 通常返回一個集合作為結(jié)果,集合包含很多有用的、功能強大的方法。你可以很方便的對集合進行過濾、修改等操作。本次教程就一起來看一看集合的常用方法及功能。
集合并不僅限于 eloquent ,也可以多帶帶使用。但 Eloquent 的結(jié)果就是一個集合。你可以使用助手函數(shù) collect 將數(shù)組轉(zhuǎn)化為集合。下面所列出的集合的方法適用于 eloquent 結(jié)果的同時也適用于集合本身。

比方說,你有一個帖子模型。 你找到所有 php 類別的帖子。

$posts = AppPost::where("category", "php")->get();

上面的命令返回一個集合。 集合是一個laravel類,它在內(nèi)部使用數(shù)組函數(shù)并為它們添加許多功能。

你可以簡單的使用?collect 方法創(chuàng)建一個集合,如下:

$collection = collect([
    [
        "user_id" => "1",
        "title" => "Helpers in Laravel",
        "content" => "Create custom helpers in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => "2",
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => "3",
        "title" => "Telegram Bot",
        "content" => "Crypto Telegram Bot in Laravel",
        "category" => "php"
    ],
]);

上面的數(shù)組實際上是 Post 模型的值。 在本教程中,我們將使用此數(shù)組進行簡化。 請記住,一切都將以同樣的方式基于 eloquent。

當我們在 eloquent 集合上使用輔助方法時,不會再查詢數(shù)據(jù)庫。 我們首先要從數(shù)據(jù)庫中獲取所有結(jié)果,然后我們使用集合方法來過濾和修改它們,而無需查詢數(shù)據(jù)庫。

filter()

filter,最有用的 laravel 集合方法之一,允許您使用回調(diào)過濾集合。 它只傳遞那些返回true的項。 所有其他項目都被刪除。 filter 返回一個新實例而不更改原始實例。 它接受 valuekey 作為回調(diào)中的兩個參數(shù)。

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

$filter->all();

all 方法返回底層數(shù)組。 上面的代碼返回以下響應(yīng)。

[
    1 => [
        "user_id" => 2,
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ]
]
search()

search?方法可以用給定的值查找集合。如果這個值在集合中,會返回對應(yīng)的鍵。如果沒有數(shù)據(jù)項匹配對應(yīng)的值,會返回 false

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

$names->search("Jason");

// 2

search 方法默認使用松散比較。你可以在它的第二個參數(shù)傳 true 使用嚴格比較。

你也可以傳你自己的回調(diào)函數(shù)到 search 方法中。將返回通過回調(diào)真值測試的第一個項的鍵。

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

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

// 3
chunk()

chunk?方法將集合分割為多個給定大小的較小集合。將集合顯示到網(wǎng)格中非常有用。

$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?打印集合的方法。 它可用于在任何位置的調(diào)試和查找集合內(nèi)的內(nèi)容。

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

dump?上述代碼結(jié)果。

map()

map 方法用于遍歷整個集合。 它接受回調(diào)作為參數(shù)。 valuekey 被傳遞給回調(diào)。 回調(diào)可以修改值并返回它們。 最后,返回修改項的新集合實例。

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

return $changed->all();

基本上,它將 user_id 增加1。

上面代碼的響應(yīng)如下所示。

[
    [
        "user_id" => 2,
        "title" => "Helpers in Laravel",
        "content" => "Create custom helpers in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => 3,
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => 4,
        "title" => "Telegram Bot",
        "content" => "Crypto Telegram Bot in Laravel",
        "category" => "php"
    ]
];
zip()

Zip 方法會將給定數(shù)組的值與集合的值合并在一起。相同索引的值會添加在一起,這意味著,數(shù)組的第一個值會與集合的第一個值合并。在這里,我會使用我們在上面剛剛創(chuàng)建的集合。這對 Eloquent 集合同樣有效。

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

$zipped->all();

JSON 響應(yīng)會像這樣。

所以,基本上就是這樣。如果數(shù)組的長度小于集合的長度,Laravel 會給剩下的 Collection 類型的元素末尾添加 null。類似地,如果數(shù)組的長度比集合的長度大,Laravel 會給 Collection 類型的元素添加 null,然后再接著數(shù)組的值。

whereNotIn()

您可以使用 whereNotIn 方法簡單地按照給定數(shù)組中未包含的鍵值過濾集合。 它基本上與 whereIn 相反。 此外,此方法在匹配值時使用寬松比較 ==。

讓我們過濾 $collection,其中 user_id 既不是 1 也不是 2的。

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

上面的語句將只返回 $collection 中的最后一項。 第一個參數(shù)是鍵,第二個參數(shù)是值數(shù)組。 如果是 eloquent 的話,第一個參數(shù)將是列的名稱,第二個參數(shù)將是一個值數(shù)組。

max()

max 方法返回給定鍵的最大值。 你可以通過調(diào)用max來找到最大的 user_id。 它通常用于價格或任何其他數(shù)字之類的比較,但為了演示,我們使用 user_id。 它也可以用于字符串,在這種情況下,Z> a

$collection->max("user_id");

上面的語句將返回最大的 user_id,在我們的例子中是 3。

pluck()

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

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

結(jié)果看起來像這樣。

[
  "Helpers in Laravel",
  "Testing in Laravel",
  "Telegram Bot"
]

When working with eloquent, you can pass a column name as an argument to extract its values.?pluck?also accepts a second argument and in the case of eloquent collections, it can be another column name. It will result in collection keyed by the values of the second argument.
使用 eloquent 時,可以將列名作為參數(shù)傳遞以提取值。 pluck 也接受第二個參數(shù),對于 eloquent 的集合,它可以是另一個列名。 它將導(dǎo)致由第二個參數(shù)的值作為鍵的集合。

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

結(jié)果如下:

[
    "Helpers in Laravel" => 1,
    "Testing in Laravel" => 2,
    "Telegram Bot" => 3
]
each()

each 是一種迭代整個集合的簡單方法。 它接受一個帶有兩個參數(shù)的回調(diào):它正在迭代的項和鍵。 Key 是基于 0 的索引。

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

上面代碼,只是記錄每個項的 user_id

在迭代 eloquent 集合時,您可以將所有列值作為項屬性進行訪問。 以下是我們?nèi)绾蔚刑印?/p>

$posts = AppPost::all();

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

如果回調(diào)中返回 false,它將停止迭代項目。

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

tap() 方法允許你隨時加入集合。 它接受回調(diào)并傳遞并將集合傳遞給它。 您可以對項目執(zhí)行任何操作,而無需更改集合本身。 因此,您可以在任何時候使用tap來加入集合,而不會改變集合。

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

在上面使用的 tap 方法中,我們修改了集合,然后記錄了值。 您可以對 tap 中的集合做任何您想做的事情。 上面命令的響應(yīng)是:

[
    [
        "user_id" => "1",
        "title" => "Helpers in Laravel",
        "content" => "Create custom helpers in Laravel",
        "category" => "php"
    ],
    [
        "user_id" => "2",
        "title" => "Testing in Laravel",
        "content" => "Testing File Uploads in Laravel",
        "category" => "php"
    ]
]

你可以看到 tap 不會修改集合實例。

pipe()

pipe 方法非常類似于 tap 方法,因為它們都在集合管道中使用。 pipe 方法將集合傳遞給回調(diào)并返回結(jié)果。

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

上述命令的響應(yīng)是 1。 如果從 pipe 回調(diào)中返回集合實例,也可以鏈接其他方法。

contains()

contains 方法只檢查集合是否包含給定值。 只傳遞一個參數(shù)時才會出現(xiàn)這種情況。

$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

您還可以將回調(diào)作為參數(shù)傳遞給回調(diào)方法。 將對集合中的每個項目運行回調(diào),如果其中任何一個項目通過了真值測試,它將返回 true 否則返回 false。

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

回調(diào)函數(shù)接受當前迭代項和鍵的兩個參數(shù)值。 這里我們只是檢查標題的長度是否小于13。在 Telegram Bot 中它是12,所以它返回 true

forget()

forget 只是從集合中刪除該項。 您只需傳遞一個鍵,它就會從集合中刪除該項目。

$forget = collect(["country" => "usa", "state" => "ny"]);

$forget->forget("country")->all();

上面代碼響應(yīng)如下:

[
    "state" => "ny"
]

forget 不適用于多維數(shù)組。

avg()

avg 方法返回平均值。 你只需傳遞一個鍵作為參數(shù),avg 方法返回平均值。 你也可以使用 average 方法,它基本上是 avg 的別名。

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

上面的代碼返回?30?,這是所有四個數(shù)字的平均值。 如果你沒有將任何鍵傳遞給avg 方法并且所有項都是數(shù)字,它將返回所有數(shù)字的平均值。 如果鍵未作為參數(shù)傳遞且集合包含鍵/值對,則 avg 方法返回 0。

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

$avg->avg();

上面的代碼返回 45.4,這是所有五個數(shù)字的平均值。

您可以使用這些 laravel 集合方法在您自己的項目中處理集合。

文章轉(zhuǎn)自:https://learnku.com/laravel/t... 

更多文章:https://learnku.com/laravel/c...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31290.html

相關(guān)文章

  • 你可能需要了解下Laravel集合

    摘要:前言集合通過進行實例,的內(nèi)核大部分的參數(shù)傳遞都用到了集合,但這并不代表集合就是好的。當你需要處理一組數(shù)組時,你可能就需要它幫助你快捷的解決實際問題。例如我們需要通過一個水平線切分數(shù)組,將其分為個及以上的數(shù)組個數(shù)。謝謝,還不抓緊去練習(xí)下集合 showImg(https://segmentfault.com/img/bVbhjvY?w=600&h=296); 前言 集合通過 Illumin...

    fuyi501 評論0 收藏0
  • Laravel Excel 五個隱藏功能

    摘要:文檔示例注意你必須通過安裝指定的包,比如導(dǎo)出的如下所示按需格式化單元格有一個強有力的爸爸。因此它就擁有其各種底層功能,包括各種方式的單元格格式化。 showImg(https://segmentfault.com/img/remote/1460000018375787?w=1680&h=859); Laravel Excel package 最近發(fā)布了 3.0 版本,它所具有的新功能,...

    tinna 評論0 收藏0
  • (十五)java多線程之并發(fā)集合ArrayBlockingQueue

    摘要:本人郵箱歡迎轉(zhuǎn)載轉(zhuǎn)載請注明網(wǎng)址代碼已經(jīng)全部托管有需要的同學(xué)自行下載引言做的同學(xué)們或多或少的接觸過集合框架在集合框架中大多的集合類是線程不安全的比如我們常用的等等我們寫一個例子看為什么說是不安全的例子證明是線程不安全的我們開啟個線程每個線程向 本人郵箱: 歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明網(wǎng)址 http://blog.csdn.net/tianshi_kcogithub: https://github...

    stefan 評論0 收藏0
  • jQuery 源碼系列(十五)DOM 操作

    摘要:歡迎來我的專欄查看系列文章。所以內(nèi)部一個統(tǒng)一的做法,就是采用的方式,先對要進行操作的內(nèi)部函數(shù)執(zhí)行操作,然后回調(diào)執(zhí)行任務(wù)。剩下的事情,就交給回調(diào)函數(shù)去處理。所以,的作用遠比想象的要少。 歡迎來我的專欄查看系列文章。 可能你會覺得這個名字很奇怪這個名字很奇怪,為什么叫做 domManip,即所謂的 dom 微操作。 showImg(https://segmentfault.com/img/...

    PascalXie 評論0 收藏0
  • 教程:Laravel 集合Collection基礎(chǔ)用法

    摘要:方法可以傳一個單一值,或一組鍵值對或者一個回調(diào)函數(shù),然后它會返回一個布爾值來告知目標內(nèi)容是否在集合中。排序方法接受一個鍵或回調(diào)函數(shù)參數(shù)用于對集合進行排序。獲取一個集合中所有數(shù)字的和方法通過回調(diào)函數(shù)傳遞每個數(shù)據(jù)項。 showImg(https://segmentfault.com/img/remote/1460000018726031?w=1252&h=640); 文章轉(zhuǎn)自:https:...

    CoderStudy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<