鑒于以下集合:
$client = Client::all();
//all: [
// App\Models\Client {
// #id: 1,
// name: "Roark",
// },
// App\Models\Client {
// #id: 2,
// name: "Tanika",
// },
// App\Models\Client {
// #id: 3,
// name: "Max",
// },
// App\Models\Client {
// #id: 4,
// name: "Sloane",
// },
//],
以及基于id屬性的訂單優先級陣列:
$priority = [2,3];
我想對集合進行排序(排序)并以以下順序結束:
App\Models\Client {
#id: 2,
name: "Tanika",
},
App\Models\Client {
#id: 3,
name: "Max",
},
App\Models\Client {
#id: 1,
name: "Roark",
},
App\Models\Client {
#id: 4,
name: "Sloane",
},
如果 id 不在優先級串列中,則訂單可以保持為從 DB 中提取。
理想情況下,我希望將集合作為集合保留而不使用 ->toArray()
任何幫助是極大的贊賞。謝謝!
uj5u.com熱心網友回復:
你可以使用這樣的東西:
$client = $client->sortBy(
fn($model) => in_array($model->id, $priority)
? array_search($model->id, $priority)
: count($priority) $model->id
);
使用sortBy收集方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/312829.html
