我有一个数组,我想按"is_available"键(先为true)排序该数组
0 => array:12 [▼
"id" => 1
"name" => "치킨 ~The Chicken~"
"is_available" => true
"nearest_customer_distance" => 4905.4423678942
"customers" => array:26 [▶]
]
1 => array:12 [▼
"id" => 2
"name" => "混ぜるな危険"
"is_available" => false
"customers" => array:10 [▶]
]
2 => array:12 [▼
"id" => 3
"name" => "Oh! Bánh mì"
"is_available" => true
"customers" => array:8 [▶]
]
3 => array:12 [▼
"id" => 5
"name" => "CHIJIMI DEVIL"
"is_available" => false
"customers" => array:44 [▶]
]
]
我在试这个
$newFranchiseList = $this->getFranchiseListActualPage();
$finalFranchiseList = array_merge($this->franchiseList, $newFranchiseList);
$finalFranchiseList = collect($finalFranchiseList)->sortBy('is_available')->reverse();
$this->franchiseList = $finalFranchiseList->toArray();
但在我看来,我是通过ID获得订单的,这是我的观点
@forelse($franchiseList as $franchise)
@if($franchise['is_available'])
{{$franchise['name']}}
IS AVAILABLE
@else
{{$franchise['name']}}
NOT AVAILABLE
@endif
@empty
@endforelse
如果我做dump($this->franchiseList)
,列表显示的顺序是可用的!
note: $this->franchiseList
从未在组件中使用,唯一要使用的行是最后一行,如果我不使用这一行,列表为空
component data collection process
首先,在javascript中调用livewire侦听器
window.livewire.emit('franchises:selectedCoords', JSON.stringify(selectedCoords));
然后由组件接收
public $selectedLatitude,
$selectedLongitude,
$perPage = 20,
$franchiseList = [],
$page = 1,
$totalFranchises = 0,
$isLoaded = false;
protected $listeners = [
'franchises:selectedCoords' => 'getCoords'
];
public function render()
{
return view('livewire.franchise-list');
}
public function getCoords($selectedCoords)
{
if ($selectedCoords) {
if (!empty($this->franchiseList)) {
$this->clearList();
}
$this->selectedLatitude = json_decode($selectedCoords, true)['lat'];
$this->selectedLongitude = json_decode($selectedCoords, true)['lng'];
}
$this->getFranchiseList();
}
public function getFranchiseList()
{
if ($this->selectedLatitude && $this->selectedLongitude) {
if (!$this->allFranchisesAreLoaded())
{
$newFranchiseList = $this->getFranchiseListActualPage();
$finalFranchiseList = array_merge($this->franchiseList, $newFranchiseList);
$this->franchiseList = collect($finalFranchiseList)->sortBy('is_available')->reverse()->toArray();
}
$this->isLoaded = true;
}
}
请记住,$this->franchiseList
永远不会被覆盖,也就是说,它只会在第$this->franchiseList = collect($finalFranchiseList)->sortBy('is_available')->reverse()->toArray ();
行中使用一次,如果它没有被覆盖,它将成为一个空数组,因此没有其他$this->franchiseList
具有Blade 视图所示的顺序