📌 Article::query()->where('article_id', 6)->select()->first()
- ?? 進行數據結果的循環,遍歷
1.each()
方法遍歷集合中的項目并將每個項目傳遞給閉包,進行處理數據
Article::query()->get()->each(function ($item) {// 可以直接執行sql 數據$item->content = str_replace('<img', '<img style="max-width:100%"', $item->content);$item->save();// 不可以直接進行數據的格式化});2.map()
該 map 方法遍歷集合并將每一個值傳入給定的回調函數。該回調函數可以任意修改集合項并返回,從而生成被修改過集合項的新集合(要有接收變量。它不會更改原數據)Article::query()->get()->map(function ($item, $key) {$item->created_at = strtotime($item->created_at);
});
💡 但其實我覺得都不好用。還不如直接toArray(),再用foreach。有的時候情況比較復雜
需要多個條件,進行數據分析。比如一個班的學生。要求獲取性別分類。年齡分類。我覺得一個循環就夠了。沒有必要多次調用這些
遍歷方法進行遍歷獲取。當然 如果說 閉包中使用引用。那就當我沒說
$groupBySex = []
$groupByAge = []Article::query()->get()->map(function ($item, $key) use(&$groupBySex, &$groupByAge) {$item->created_at = strtotime($item->created_at);if ( $item->sex === '男' ) {$groupBySex['boy'] = $item}else {$groupByAge['sex'] = $item}
});
2.?? 對數據進行分組(還行挺實用的)
1.groupby
Article::query()->get()->groupBy('article_id')
// 將id提取出來作為Key
['account-x10' => [['account_id' => 'account-x10', 'product' => 'Chair'],['account_id' => 'account-x10', 'product' => 'Bookcase'],],'account-x11' => [['account_id' => 'account-x11', 'product' => 'Desk'],],]
2. keyby
Article::query()->get()->keyby('article_id')
// 將article_id 提取出來作為keykeyBy 和 groupBy 主要的區別在于,如果說遇到相同重復的key 的時候。 keyBy會用最新的。 groupBy 會保留,在同一個鍵值數組內作為一維數組
$collection = collect([['product' => 'Desk', 'price' => 200],['product' => 'Chair', 'price' => 100],['product' => 'Desk', 'price' => 150]
]);$grouped = $collection->groupBy('product');
$keyed = $collection->keyBy('product');/*
['Desk' => [['product' => 'Desk', 'price' => 200],['product' => 'Desk', 'price' => 150]],'Chair' => [['product' => 'Chair', 'price' => 100]]
]
*//*
['Desk' => ['product' => 'Desk', 'price' => 150],'Chair' => ['product' => 'Chair', 'price' => 100]
]
*/
3.?? 將獲得的數據二維變一維 (也挺實用的)
1. flatten
將數據從二維變成一維。
$collection = collect(['name' => 'taylor','languages' => ['php', 'javascript']
]);$flattened = $collection->flatten();$flattened->all();// ['taylor', 'php', 'javascript'];場景 比如獲取多條記錄的id值后。直接將這些id,直接展開
Article::query()->select(['id'])->get()->flatten();// 就能得到[1,2,3,4,5,6]
4.?? 獲取集合內的某一列的數據
1. pluck
該 pluck 可以獲取集合中指定鍵對應的所有值:
$collection = collect([['product_id' => 'prod-100', 'name' => 'Desk'],['product_id' => 'prod-200', 'name' => 'Chair'],
]);$plucked = $collection->pluck('name');$plucked->all();// ['Desk', 'Chair']
5.?? 直接排序(有的時候有用)但很多情況數據庫數據 就直接用 order() 排序。直接排序了
1. sortBy
Article::query()->sortBy('views')
Article::query()->sortBy('point')
6.?? 創建collection(初始化)
$collection = Collection::wrap('John Doe');
💡 其他的使用不怎么竟然用的到。如果很復雜的。可能更喜歡使用toArray() 轉化成為數組使用