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

資訊專欄INFORMATION COLUMN

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

alphahans / 2848人閱讀

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

文章轉自:https://learnku.com/laravel/t... 

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

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

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

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

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

$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"
    ],
]);

上面的數組實際上是 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 Laravel",
        "content" => "Testing File Uploads in 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?上述代碼結果。

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 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 方法會將給定數組的值與集合的值合并在一起。相同索引的值會添加在一起,這意味著,數組的第一個值會與集合的第一個值合并。在這里,我會使用我們在上面剛剛創建的集合。這對 Eloquent 集合同樣有效。

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

$zipped->all();

JSON 響應會像這樣。

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

whereNotIn()

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

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

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

上面的語句將只返回 $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 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 時,可以將列名作為參數傳遞以提取值。 pluck 也接受第二個參數,對于 eloquent 的集合,它可以是另一個列名。 它將導致由第二個參數的值作為鍵的集合。

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

結果如下:

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

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

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

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

在迭代 eloquent 集合時,您可以將所有列值作為項屬性進行訪問。 以下是我們如何迭代所有帖子。

$posts = AppPost::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 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 方法將集合傳遞給回調并返回結果。

$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["title"]) < 13;
});
// true

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

forget()

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

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

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

上面代碼響應如下:

[
    "state" => "ny"
]

forget 不適用于多維數組。

avg()

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

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

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

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

$avg->avg();

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

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

文章轉自:https://learnku.com/laravel/t... 

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31290.html

相關文章

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

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

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

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

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

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

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

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

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

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

    CoderStudy 評論0 收藏0

發表評論

0條評論

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