鍍金池/ 問答/PHP/ laravel 怎么創(chuàng)建一個空集合并將其與一個非空集合合并?

laravel 怎么創(chuàng)建一個空集合并將其與一個非空集合合并?

想做一個搜索功能,用多個關鍵詞搜索同一模型的同一字段(例如描述),每個關鍵詞搜索出來一個集合,這些集合可能會有重復內容,我的想法是先將這些集合合并,然后去除重復信息。

$search_key_array = explode(' ', $keyword);
//創(chuàng)建一個空集合
$collection = collect([]);
foreach ($search_key_array as $value) {

    $products = Product::where('description','like','%'.$value.'%')
        ->get();
    if ($products->isNotEmpty()) {
        $collection->concat($products);
    }
}
//剔除重復內容,并重置數字索引
$collection = $collection->unique()->values();

由于需要一個初始空集合,我用collect()創(chuàng)建,然后用從文檔里找到的concat方法把搜索到的集合追加到空集合上,結果我發(fā)現,用了這個concat()方法,$conllection沒有任何變化。求助大佬看看是哪里的問題?

回答
編輯回答
詆毀你

仔細看文檔,使用 collapse 方法

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

$collapsed = $collection->collapse();

$collapsed->all();
2018年4月30日 12:17
編輯回答
礙你眼

可以用splice:

$a = collect([]);
$a->splice(0, 0, [0 => ['k' => 'd'], 1 => ['k' => 's']]);
$a->splice(2, 0, [0 => ['k' => 'd2'], 1 => ['k' => 's2']]);
dd($a);

循環(huán)的時候,第一個參數需要動態(tài)計算$a長度獲得。

2018年4月11日 01:29