پرش به محتوای اصلی

collection در لاراول چیست

Ali Majidi Ali Majidi — دقیقه مطالعه ۷,۶۶۳ بازدید
collection در لاراول چیست
Collection یکی از قدرتمندترین امکاناتی است که لاراول در اختیار شما قرار می دهد. در واقع اگر با ماهیت Collection ها در لاراول آشنایی نداشته باشید، احتمالا در هنگام کار کردن با الوکوئنت (Eloquent) لاراول با مشکل مواجه می شوید. به طور مثال در ساده ترین حالت، فرض کنید ده ها داده دارید که می خواهید میانگین این داده ها را حساب کنید، یا فرض کنید که آرایه ای از اعداد، نام ها، تاریخ مصرف کالا ها، قیمت مصرف کننده و قیمت فروش دارید، حال بدون استفاده از Collection ها محاسبه مجموع فروش یک روز تقریبا غیر ممکن می شود. این ها تنها مثال های بسیار کوچکی از Collection ها است که در این مقاله به معرفی آن ها و آموزش کار با آن می پردازیم.

نام Collection ها در لاراول

لاراول تا به امروز شامل بیش از ۱۲۰ Collection با قابلیت های شگفت انگیزی است که ابتدا این Collection ها را نام می بریم و سپس به توضیح هر کدام از آن ها می پردازیم.
  • all
  • average
  • avg
  • chunk
  • collapse
  • collect
  • combine
  • concat
  • contains
  • count
  • countBy
  • crossJoin
  • dd
  • diff
  • diffAssoc
  • diffKeys
  • dump
  • duplicates
  • duplicatesStrict
  • each
  • except
  • first
  • firstWhere
  • flip
  • forget
  • get
  • groupBy
  • has
  • implode
  • intersect
  • intersectByKeys
  • isEmpty
  • isNotEmpty
  • join
  • last
  • max
  • median
  • merge
  • mergeRecursive
  • min
  • pluck
  • pop
  • prepend
  • pull
  • push
  • put
  • random
  • replace
  • reverse
  • search
  • shift
  • shuffle
  • sort
  • sortBy
  • sortByDesc
  • sortDesc
  • sortKeys
  • sortKeysDesc
  • splice
  • sum
  • times
  • toArray
  • unique
  • unless
  • unwrap
  • values
  • where
  • whereStrict
  • whereBetween
  • whereIn
  • whereInStrict
  • whereInstanceOf
  • whereNotBetween

کاربرد Collection ها در لاراول

تمامی Collection هایی که در بالا نام بردیم کاربرد های متعددی دارند که به ترتیب به تمام آن ها می پردازیم.

all

این متد تمام داده های یک آرایه را بر می گرداند.
collect([1, 2, 3])->all();

// [1, 2, 3]

average

این متد و متد ()avg میانگین داده ها را به ما برمی گرداند.
$average = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->avg('foo');

// 20

$average = collect([1, 1, 2, 4])->average();

// 2

chunk

این متد یک آرایه را به صورت مساوی  دسته بندی می کند. به طور مثال اگر بر روی یک آرایه ی ۸ تایی (4)chunk را اعمال کنیم. این آرایه به ۲ آرایه ی ۴ تایی تقسیم می شود، البته اگر به طور مثال تعداد اعضای آرایه ۱۰ باشد، chunk آن را به ۲ آرایه ی ۴ تایی و ۱ آرایه ی ۲ تایی تقسیم می کند.
$collection = collect([1, 2, 3, 4, 5, 6, 7]);

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

$chunks->toArray();

// [[1, 2, 3, 4], [5, 6, 7]]
این متد هنگام کار با View ها بسیار کاربردی می باشد، در مثال زیر  Product ها را به آرایه های ۳ تایی تقسیم کردیم و سپس نمایش دادیم.
@foreach ($products->chunk(3) as $chunk)
    <div class="row">
        @foreach ($chunk as $product)
            <div class="col-xs-4">{{ $product->name }}</div>
        @endforeach
    </div>
@endforeach

collapse

این متد چند آرایه را به یک آرایه تبدیل می کند.
$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]

collect

این متد یک Collection جدید از روی Collection اصلی ایجاد می کند، یعنی می توانیم از این متد هنگامی که می خواهیم از یک Collection کپی بگیریم، استفاده کنیم.
$collectionA = collect([1, 2, 3]);

$collectionB = $collectionA->collect();

$collectionB->all();

// [1, 2, 3]

combine

این متد بر روی بیش از یک آرایه اعمال می شود، به این صورت که فرض کنید یک آرایه با مقادیر نام و سن و یک آرایه ی دیگر با مقدار علی و ۲۰ داریم. حال اگر این دو آرایه را Combine کنیم، آرایه ی نهایی به صورت [ '۲۰'<='سن' , 'علی'<='نام' ] درمی آید.
$collection = collect(['name', 'age']);

$combined = $collection->combine(['George', 29]);

$combined->all();

// ['name' => 'George', 'age' => 29]

concat

این متد Value های دو یا چند آرایه را در یک آرایه قرار می دهد.
$collection = collect(['John Doe']);

$concatenated = $collection->concat(['Jane Doe'])->concat(['name' => 'Johnny Doe']);

$concatenated->all();

// ['John Doe', 'Jane Doe', 'Johnny Doe']

contains

از این متد زمانی استفاده می کنیم که بخواهیم بدانیم آیا یک Value در یک آرایه وجود دارد یا خیر.
$collection = collect(['name' => 'Desk', 'price' => 100]);

$collection->contains('Desk');

// true

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

// false
هم چنین می توانیم چک کنیم که آیا یک Key و Value به طور هم زمان در یک آرایه وجود دارند یا خیر.
$collection = collect([
    ['product' => 'Desk', 'price' => 200],
    ['product' => 'Chair', 'price' => 100],
]);

$collection->contains('product', 'Bookcase');

// false

count

این متد تعداد داده های موجود در یک Collection یا آرایه را بر می گرداند.
$collection = collect([1, 2, 3, 4]);

$collection->count();

// 4

countBy

این متد تعداد تكرار هر داده را به ما بر می گرداند.
$collection = collect([1, 2, 2, 2, 3]);

$counted = $collection->countBy();

$counted->all();

// [1 => 1, 2 => 3, 3 => 1]

crossJoin

این متد به طور مثال هنگامی که بر روی دو آرایه اعمال شود، داده ی اول آرایه ی اول را به تمام داده های آرایه ی دوم، داده دوم آرایه ی اول را به تمام داده های آرایه ی دوم و به همین صورت تا انتها نسبت می دهد.
$collection = collect([1, 2]);

$matrix = $collection->crossJoin(['a', 'b']);

$matrix->all();

/*
    [
        [1, 'a'],
        [1, 'b'],
        [2, 'a'],
        [2, 'b'],
    ]
*/

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

$matrix = $collection->crossJoin(['a', 'b'], ['I', 'II']);

$matrix->all();

/*
    [
        [1, 'a', 'I'],
        [1, 'a', 'II'],
        [1, 'b', 'I'],
        [1, 'b', 'II'],
        [2, 'a', 'I'],
        [2, 'a', 'II'],
        [2, 'b', 'I'],
        [2, 'b', 'II'],
    ]
*/

dd

این متد در هر جایی از کد بیاید تمام داده های درخواستی را نمایش می دهد و پس از آن ادامه ی کد متوقف خواهد شد.
$collection = collect(['John Doe', 'Jane Doe']);

$collection->dd();

/*
    Collection {
        #items: array:2 [
            0 => "John Doe"
            1 => "Jane Doe"
        ]
    }
*/
اگر می خواهید که ادامه ی کد متوقف نشود، می توانید به جای dd از dump استفاده کنید.

dump

این متد در هر جایی از کد بیاید تمام داده های درخواستی را نمایش می دهد و پس از کد ادامه پیدا می کند.
The dump method dumps the collection's items:

$collection = collect(['John Doe', 'Jane Doe']);

$collection->dump();

/*
    Collection {
        #items: array:2 [
            0 => "John Doe"
            1 => "Jane Doe"
        ]
    }
*/

diff

این متد اگر بر روی ۲ آرایه اعمال شود، تمام داده هایی که در آرایه ی اول وجود دارد ولی در آرایه ی دوم وجود ندارد را بر می گرداند.
$collection = collect([1, 2, 3, 4, 5]);

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

$diff->all();

// [1, 3, 5]

diffAssoc

این متد همانند متد diff عمل می کند با این تفاوت که به جای بررسی Value ها، هم Value و هم Key دو یا چند آرایه را با هم مطابقت می دهد و در صورتی که دقیق همان Key و Value که در آرایه ی اول وجود دارد در آرایه ی دوم وجود نداشته باشد، Key و Value آرایه ی اول را بر می گرداند.
$collection = collect([
    'color' => 'orange',
    'type' => 'fruit',
    'remain' => 6,
]);

$diff = $collection->diffAssoc([
    'color' => 'yellow',
    'type' => 'fruit',
    'remain' => 3,
    'used' => 6,
]);

$diff->all();

// ['color' => 'orange', 'remain' => 6]

diffKeys

این متد همانند متد diff عمل می کند با این تفاوت که به جای بررسی Value ها، Key ها را بررسی می کند.
$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]

duplicates

این متد تمام داده هایی که ۲ بار تکرار شده اند را بر می گرداند.
$collection = collect(['a', 'b', 'a', 'c', 'b']);

$collection->duplicates();

// [2 => 'a', 4 => 'b']
اگر بخواهیم در یک یا چند آرایه، بین Key های خاص، دنبال مقادیری بگردیم که ۲ بار تکرار شده اند، به شکل زیر عمل می کنیم.
$employees = collect([
    ['email' => 'abigail@example.com', 'position' => 'Developer'],
    ['email' => 'james@example.com', 'position' => 'Designer'],
    ['email' => 'victoria@example.com', 'position' => 'Developer'],
])

$employees->duplicates('position');

// [2 => 'Developer']

each

این متد تمام داده های یک آرایه را مانند حلقه foreach جدا می کند و برمی گرداند.
$collection->each(function ($item, $key) {
    //
});

except

این متد تمام داده های یک آرایه را به غیر از مقادیری که وارد کردیم برمی گرداند.
$collection = collect(['product_id' => 1, 'price' => 100, 'discount' => false]);

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

$filtered->all();

// ['product_id' => 1]

first

این متد اولين داده ی یک آرایه را برمی گرداند.
collect([1, 2, 3, 4])->first();

// 1

firstWhere

این متد اولين داده ی یک آرایه را با شرط خاصی که بیان می کنیم برمی گرداند.
$collection = collect([
    ['name' => 'Regena', 'age' => null],
    ['name' => 'Linda', 'age' => 14],
    ['name' => 'Diego', 'age' => 23],
    ['name' => 'Linda', 'age' => 84],
]);

$collection->firstWhere('name', 'Linda');

// ['name' => 'Linda', 'age' => 14]
به طور مثال در کد بالا اولين داده ای که نامش Linda است را دریافت می کنیم.
$collection->firstWhere('age', '>=', 18);

// ['name' => 'Diego', 'age' => 23]
یا در این مثال اولين داده ای که سنش بزرگ تر مساوی ۱۸ باشد را دریافت می کنیم.

flip

این متد جای Key و Value آرایه را عوض می کند.
$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);

$flipped = $collection->flip();

$flipped->all();

// ['taylor' => 'name', 'laravel' => 'framework']

forget

این متد یک Key و Value را از آرایه پاک می کند.
$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);

$collection->forget('name');

$collection->all();

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

get

در این متد با فراخوانی Key یک داده می توانید Value آن داده را بخوانید.
$collection = collect(['name' => 'taylor', 'framework' => 'laravel']);

$value = $collection->get('name');

// taylor

groupBy

این متد یک آرایه را گروه بندی می کند، یعنی هنگامی که یک مقدار را به این متد ارسال می کنیم، با توجه به آن مقدار، گروه های مختلفی از داده های آن آرایه ایجاد می شود.
$collection = collect([
    ['account_id' => 'account-x10', 'product' => 'Chair'],
    ['account_id' => 'account-x10', 'product' => 'Bookcase'],
    ['account_id' => 'account-x11', 'product' => 'Desk'],
]);

$grouped = $collection->groupBy('account_id');

$grouped->toArray();

/*
    [
        'account-x10' => [
            ['account_id' => 'account-x10', 'product' => 'Chair'],
            ['account_id' => 'account-x10', 'product' => 'Bookcase'],
        ],
        'account-x11' => [
            ['account_id' => 'account-x11', 'product' => 'Desk'],
        ],
    ]
*/

has

این متد وجود یک یا چند داده را در آرایه بررسی می کند.
$collection = collect(['account_id' => 1, 'product' => 'Desk', 'amount' => 5]);

$collection->has('product');

// true

$collection->has(['product', 'amount']);

// true

$collection->has(['amount', 'price']);

// false

implode

این متد Value های یک آرایه را به هم می چسباند.
$collection = collect([
    ['account_id' => 1, 'product' => 'Desk'],
    ['account_id' => 2, 'product' => 'Chair'],
]);

$collection->implode('product', ', ');

// Desk, Chair

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

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

intersect

این متد هنگام مقایسه ۲ آرایه تمام داده هایی که در آرایه ی اول و دوم وجود دارد را به ما نشان می دهد.
$collection = collect(['Desk', 'Sofa', 'Chair']);

$intersect = $collection->intersect(['Desk', 'Chair', 'Bookcase']);

$intersect->all();

// [0 => 'Desk', 2 => 'Chair']
Key داده های جدید همان Key آرایه ی اول می باشد

intersectByKeys

این متد هنگام مقایسه ۲ آرایه تمام Key هایی که در آرایه ی اول و دوم وجود دارد را همراه با Value آرایه ی اول به ما نشان می دهد.
$collection = collect([
    'serial' => 'UX301', 'type' => 'screen', 'year' => 2009,
]);

$intersect = $collection->intersectByKeys([
    'reference' => 'UX404', 'type' => 'tab', 'year' => 2011,
]);

$intersect->all();

// ['type' => 'screen', 'year' => 2009]

isEmpty

این متد خالی بودن یک آرایه را چک می کند.
collect([])->isEmpty();

// true

isNotEmpty

این متد خالی نبودن یک آرایه را چک می کند.
collect([])->isNotEmpty();

// false

join

این متد Value های یک آرایه را همان طور که ما بخواهیم به هم می چسباند.
collect(['a', 'b', 'c'])->join(', '); // 'a, b, c'
collect(['a', 'b', 'c'])->join(', ', ', and '); // 'a, b, and c'
collect(['a', 'b'])->join(', ', ' and '); // 'a and b'
collect(['a'])->join(', ', ' and '); // 'a'
collect([])->join(', ', ' and '); // ''

last

این متد آخرین داده ی یک آرایه را برمی گرداند.
collect([1, 2, 3, 4])->last(function ($value, $key) {
    return $value < 3;
});

// 2

collect([1, 2, 3, 4])->last();

// 4

max

این متد بزرگ ترین داده ی یک آرایه را برمی گرداند.
$max = collect([['foo' => 10], ['foo' => 20]])->max('foo');

// 20

$max = collect([1, 2, 3, 4, 5])->max();

// 5

median

این متد داده ی وسطی یک آرایه را برمی گرداند و در صورتی که دو آرایه در وسط قرار داشته باشند میانگین آن ها را برمی گرداند.
$median = collect([['foo' => 10], ['foo' => 10], ['foo' => 20], ['foo' => 40]])->median('foo');

// 15

$median = collect([1, 1, 2, 4])->median();

// 1.5

merge

این متد داده های یک آرایه را به هم می چسباند و در صورتی که یکی از داده ها در آرایه ی دوم قرار داشته باشد آن را در آرایه ی نهایی قرار می دهد.
$collection = collect(['product_id' => 1, 'price' => 100]);

$merged = $collection->merge(['price' => 200, 'discount' => false]);

$merged->all();

// ['product_id' => 1, 'price' => 200, 'discount' => false]

$collection = collect(['Desk', 'Chair']);

$merged = $collection->merge(['Bookcase', 'Door']);

$merged->all();

// ['Desk', 'Chair', 'Bookcase', 'Door']

mergeRecursive

این متد داده های یک آرایه را به هم می چسباند و در صورت تکرار یک داده، هر دوی آن ها را در آرایه نهایی قرار می دهد.
$collection = collect(['product_id' => 1, 'price' => 100]);

$merged = $collection->mergeRecursive(['product_id' => 2, 'price' => 200, 'discount' => false]);

$merged->all();

// ['product_id' => [1, 2], 'price' => [100, 200], 'discount' => false]

min

این متد کوچک ترین داده یک آرایه را برمی گرداند.
$min = collect([['foo' => 10], ['foo' => 20]])->min('foo');

// 10

$min = collect([1, 2, 3, 4, 5])->min();

// 1

pluck

این متد تمام Value های یک آرایه با یک Key خاص را برمی گرداند.
$collection = collect([
    ['product_id' => 'prod-100', 'name' => 'Desk'],
    ['product_id' => 'prod-200', 'name' => 'Chair'],
]);

$plucked = $collection->pluck('name');

$plucked->all();

// ['Desk', 'Chair']

pop

این متد داده ی آخر یک آرایه را ابتدا به ما نشان می دهد و سپس آن را از آرایه ی اصلی حذف می کند.
$collection = collect([1, 2, 3, 4, 5]);

$collection->pop();

// 5

$collection->all();

// [1, 2, 3, 4]

prepend

این متد یک داده را به ابتدای یک آرایه اضافه می کند.
$collection = collect([1, 2, 3, 4, 5]);

$collection->prepend(0);

$collection->all();

// [0, 1, 2, 3, 4, 5]

pull

این متد Value یک Key را ابتدا به ما نشان می دهد و سپس آن را از آرایه ی اصلی حذف می کند.
$collection = collect(['product_id' => 'prod-100', 'name' => 'Desk']);

$collection->pull('name');

// 'Desk'

$collection->all();

// ['product_id' => 'prod-100']

push

این متد یک داده را به انتهای یک آرایه اضافه می کند.
$collection = collect([1, 2, 3, 4]);

$collection->push(5);

$collection->all();

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

put

این متد یک Key و Value را به انتهای یک آرایه اضافه می کند.
$collection = collect(['product_id' => 1, 'name' => 'Desk']);

$collection->put('price', 100);

$collection->all();

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

random

این متد یک داده را به صورت تصادفی بر می گرداند.
$collection = collect([1, 2, 3, 4, 5]);

$collection->random();

// 4 - (retrieved randomly)

replace

این متد داده های دو آرایه را در صورت وجود جا به جا و در صورت وجود نداشتن، ایجاد می کند.
$collection = collect(['Taylor', 'Abigail', 'James']);

$replaced = $collection->replace([1 => 'Victoria', 3 => 'Finn']);

$replaced->all();

// ['Taylor', 'Victoria', 'James', 'Finn']

reverse

این متد داده های یک آرایه را از آخر به اول مرتب می کند.
$collection = collect(['a', 'b', 'c', 'd', 'e']);

$reversed = $collection->reverse();

$reversed->all();

/*
    [
        4 => 'e',
        3 => 'd',
        2 => 'c',
        1 => 'b',
        0 => 'a',
    ]
*/

search

این متد Key یک Value را پیدا می کند.
$collection = collect([2, 4, 6, 8]);

$collection->search(4);

// 1

shift

این متد داده ی اول یک آرایه را ابتدا به ما نشان می دهد و سپس آن را از آرایه ی اصلی حذف می کند.
$collection = collect([1, 2, 3, 4, 5]);

$collection->shift();

// 1

$collection->all();

// [2, 3, 4, 5]

shuffle

این متد داده های یک آرایه را درهم می کند.
$collection = collect([1, 2, 3, 4, 5]);

$shuffled = $collection->shuffle();

$shuffled->all();

// [3, 2, 5, 1, 4] - (generated randomly)

sort

این متد داده های یک آرایه را از کوچک به بزرگ مرتب می کند.
$collection = collect([5, 3, 1, 2, 4]);

$sorted = $collection->sort();

$sorted->values()->all();

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

sortBy

این متد داده های یک آرایه را با توجه به Key وارد شده از کوچک به بزرگ مرتب می کند.
$collection = collect([
    ['name' => 'Desk', 'price' => 200],
    ['name' => 'Chair', 'price' => 100],
    ['name' => 'Bookcase', 'price' => 150],
]);

$sorted = $collection->sortBy('price');

$sorted->values()->all();

/*
    [
        ['name' => 'Chair', 'price' => 100],
        ['name' => 'Bookcase', 'price' => 150],
        ['name' => 'Desk', 'price' => 200],
    ]
*/

sortDesc

این متد داده های یک آرایه را از بزرگ به کوچک مرتب می کند.
$collection = collect([5, 3, 1, 2, 4]);

$sorted = $collection->sortDesc();

$sorted->values()->all();

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

sortKeys

این متد Key های یک آرایه را از حرف یا عدد کوچک به بزرگ مرتب می کند.
$collection = collect([
    'id' => 22345,
    'first' => 'John',
    'last' => 'Doe',
]);

$sorted = $collection->sortKeys();

$sorted->all();

/*
    [
        'first' => 'John',
        'id' => 22345,
        'last' => 'Doe',
    ]
*/

splice

این متد تعداد دلخواهی از داده های یک آرایه را حذف می کند و سپس برمی گرداند.
$collection = collect([1, 2, 3, 4, 5]);

$chunk = $collection->splice(2);

$chunk->all();

// [3, 4, 5]

$collection->all();

// [1, 2]

sum

این متد مجموع داده های یک آرایه را برمی گرداند.
collect([1, 2, 3, 4, 5])->sum();

// 15

$collection = collect([
    ['name' => 'JavaScript: The Good Parts', 'pages' => 176],
    ['name' => 'JavaScript: The Definitive Guide', 'pages' => 1096],
]);

$collection->sum('pages');

// 1272

toArray

این متد یک Collection را به یک آرایه تبدیل می کند.
$collection = collect(['name' => 'Desk', 'price' => 200]);

$collection->toArray();

/*
    [
        ['name' => 'Desk', 'price' => 200],
    ]
*/

toJson

این متد یک Collection را به یک کد با فرمت Json تبدیل می کند.
$collection = collect(['name' => 'Desk', 'price' => 200]);

$collection->toJson();

// '{"name":"Desk", "price":200}'

unique

این متد داد ه هایی که تنها یک بار تكرار شده است را برمی گرداند.
$collection = collect([1, 1, 2, 2, 3, 4, 2]);

$unique = $collection->unique();

$unique->values()->all();

// [1, 2, 3, 4]

$collection = collect([
    ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
    ['name' => 'iPhone 5', 'brand' => 'Apple', 'type' => 'phone'],
    ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'],
    ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
    ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'],
]);

$unique = $collection->unique('brand');

$unique->values()->all();

/*
    [
        ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
        ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
    ]
*/

$unique = $collection->unique(function ($item) {
    return $item['brand'].$item['type'];
});

$unique->values()->all();

/*
    [
        ['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
        ['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'],
        ['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
        ['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'],
    ]
*/

where

این متد داده هایی با شرایطی که وارد می کنیم را بر می گرداند.
$collection = collect([
    ['product' => 'Desk', 'price' => 200],
    ['product' => 'Chair', 'price' => 100],
    ['product' => 'Bookcase', 'price' => 150],
    ['product' => 'Door', 'price' => 100],
]);

$filtered = $collection->where('price', 100);

$filtered->all();

/*
    [
        ['product' => 'Chair', 'price' => 100],
        ['product' => 'Door', 'price' => 100],
    ]
*/

$collection = collect([
    ['name' => 'Jim', 'deleted_at' => '2019-01-01 00:00:00'],
    ['name' => 'Sally', 'deleted_at' => '2019-01-02 00:00:00'],
    ['name' => 'Sue', 'deleted_at' => null],
]);

$filtered = $collection->where('deleted_at', '!=', null);

$filtered->all();

/*
    [
        ['name' => 'Jim', 'deleted_at' => '2019-01-01 00:00:00'],
        ['name' => 'Sally', 'deleted_at' => '2019-01-02 00:00:00'],
    ]
*/

whereBetween

این متد داده هایی که بین دو مقدار خاص هستند را بر می گرداند.
$collection = collect([
    ['product' => 'Desk', 'price' => 200],
    ['product' => 'Chair', 'price' => 80],
    ['product' => 'Bookcase', 'price' => 150],
    ['product' => 'Pencil', 'price' => 30],
    ['product' => 'Door', 'price' => 100],
]);

$filtered = $collection->whereBetween('price', [100, 200]);

$filtered->all();

/*
    [
        ['product' => 'Desk', 'price' => 200],
        ['product' => 'Bookcase', 'price' => 150],
        ['product' => 'Door', 'price' => 100],
    ]
*/

جمع بندی :

در این مقاله به طور خلاصه و کاربردی به بررسی Collection های موجود در لاراول پرداختیم و با این خاصیت فوق العاده لاراول تا حدود زیادی آشنا شدیم. اگر در این مورد سوال یا نظری داشتید خوشحال می شویم که با ما و کاربران سون لرن به اشتراک بگذارید.
اگر به یادگیری بیشتر لاراول علاقه دارید می توانید در دوره آموزش لاراول کاربردی (بسته پروژه محور) شرکت کنید، این دوره شامل ۱۲ پروژه کاربردی و پر استفاده در دنیای واقعی است، که تمامی پروژه ها به صورت کامل برنامه نویسی خواهند شد، تا دانشجو بتواند با روند ایجاد و تکمیل پروژه به صورت کامل آشنا شود.
اشتراک‌گذاری:
۴ دیدگاه
Ali Majidi
نویسنده Ali Majidi
۳.۷

دیدگاه‌ها

۳ نفر تجربه‌شان را نوشته‌اند.

M
Morteza Moradi ۱۳۹۹/۸/۱۶

مقاله کامل و جامعی بود ممنون

e
ehsan ۱۳۹۹/۹/۱۶

این عالی بود سپاس

۱۴۰۱/۱/۱۳

صد خط توضیح نوشتید و انواع کالکشن ها رو معرفی کردید ، ولی یک خط در مورد خود کالکشن و ارتباط اش با الکوئنت رو ننوشتید!!