22/10/2018, 18:00

Phương thức cơ bản trong collection Laravel 5.2

Tìm hiểu các phương thức cơ bản trong collection trong Laravel 5.2

1. Hàm all() đơn giản trả về mảng cơ bản được miêu tả bởi collection:

$arr = [1, 2, 3];

collect($arr)->all();

// [1, 2, 3]

2. Chunk() chia một collection thành nhiều collect nhỏ.

$collection = collect([1, 2, 3, 4, 5, 6, 7]);

$chunks = $collection->chunk(4);

$chunks->toArray();

// [[1, 2, 3, 4], [5, 6, 7]]

3. Collapse gộp nhiều mảng collection thành 1 collect

 

$collection = collect([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);

$collapsed = $collection->collapse();

$collapsed->all();

// [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

4. Contains() xác định một collection có bao gồm item đã cho  hay không ( tương đương với in_array() in php ) 

$collection = collect(['name' => 'Desk', 'price' => 100]);

$collection->contains('Desk');

// true

$collection->contains('New York');

// false

Nó sẽ xác định sự tồn tại cặp đó trong collection contains để thực hiện test kiểm tra

$collection = collect([1, 2, 3, 4, 5]);

$collection->contains(function ($key, $value) {
    return $value > 3;
});

// true

5. diff() check loại bỏ những giá trị bị trùng trong collection

$collection = collect([1, 2, 3, 4, 5]);

$diff = $collection->diff([2, 4, 6, 8]);

$diff->all();

// [1, 3, 5]

6. diffkey() check so sách key của một collection với một collection hoặc một array trong php để loại bỏ đi những thằng trùng keys

 

$collection = collect([
    'one' => 10,
    'two' => 20,
    'three' => 30,
    'four' => 40,
    'five' => 50,
]);

$diff = $collection->diffKeys([
    'two' => 2,
    'four' => 4,
    'six' => 6,
    'eight' => 8,
]);

$diff->all();

// ['one' => 10, 'three' => 30, 'five' => 50]

7. each() lặp qua các phần tử trong collection và truyền mỗi phần tử vào trong 1 callback

 

$collection = $collection->each(function ($item, $key) {
    //
});

8. except()  trả về toàn bộ phần tử trong collection trừ những phần từ với key đã được chỉ định.

 

$collection = collect(['product_id' => 1, 'price' => 100, 'discount' => false]);

$filtered = $collection->except(['price', 'discount']);

$filtered->all();

// ['product_id' => 1]

 

9. filter() lọc qua collection bằng một callback, chỉ giữ lại những phần tử mà thông qua điều kiện đã cho:

 

$collection = collect([1, 2, 3, 4]);

$filtered = $collection->filter(function ($value, $key) {
    return $value > 2;
});

$filtered->all();

// [3, 4]

 

10. flatten()  Làm phẳng collection nhiều chiều thành một chiều.

$collection = collect(['name' => 'taylor', 'languages' => ['php', 'javascript']]);

$flattened = $collection->flatten();

$flattened->all();

// ['taylor', 'php', 'javascript'];

 

11. forget() xóa một phần tử của collection bởi key

 

$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);

$collection->forget('name');

$collection->all();

// ['framework' => 'laravel']     

 

12. has() xác định một key đã tồn tại trong collection

$collection = collect(['account_id' => 1, 'product' => 'Desk']);

$collection->has('email');

// false

 

13. imlode() chuyển một collect sang kiểu strinh.

$collection = collect([
    ['account_id' => 1, 'product' => 'Desk'],
    ['account_id' => 2, 'product' => 'Chair'],
]);

$collection->implode('product', ', '); // thuyền key = product.

// Desk, Chair

 

collect([1, 2, 3, 4, 5])->implode('-');

// '1-2-3-4-5'

14. map() lặp qua tất cả các collection rồi thuyền từng giá trị vào callback. callback thay đổi giá trị trả về, từ đó tạo ra một collect mới.

$collection = collect([1, 2, 3, 4, 5]);

$multiplied = $collection->map(function ($item, $key) {
    return $item * 2;
});

$multiplied->all();

// [2, 4, 6, 8, 10]

 

 

15. only() trả về phần tử trong collection với key xác định.

$collection = collect(['product_id' => 1, 'name' => 'Desk', 'price' => 100, 'discount' => false]);

$filtered = $collection->only(['product_id', 'name']);

$filtered->all();

// ['product_id' => 1, 'name' => 'Desk']

16. pluck() lấy toàn bộ value của một collection với key cho trước.

Nguồn Laravel 5.2 https://laravel.com/docs/5.2/collections

0