Laravel foreach сортира по, първо показва конкретни записи

Имам цикъл foreach и искам да сортирам списъка, като покажа записи, където is_active първо е null, а след това всичко останало.

    @foreach ($registrations->sortBy('is_active') as $registration)

Някакви идеи?


person Community    schedule 16.11.2018    source източник
comment
искате ли да показвате само is_active = null или искате да подредите по is_active низходящ?   -  person simonecosci    schedule 16.11.2018
comment
искам да покажа записите, където is_active null в горната част. Тогава is_active има стойност, те са под нулевите записи.   -  person    schedule 16.11.2018
comment
$registrations-›orderByDesc('is_active')-›orderByDesc(...) -›get() трябва да го направи   -  person simonecosci    schedule 16.11.2018
comment
за какво е второто сортиране?   -  person    schedule 16.11.2018
comment
в случай на същото is_active ... ако 2 записа споделят 'is_active' (напр. null), тогава ще се използва вторият orderBy   -  person simonecosci    schedule 16.11.2018
comment
comment
@simonecosci това не го прави. Записът is_active все още е отдолу, а не отгоре   -  person    schedule 16.11.2018


Отговори (2)


първо направете заявка, която връща записи във възходящ ред според is_active стойност (предполагам, че 0 е за неактивен и 1 е за активен)

Заявката трябва да бъде:

$records=DB::table('table_name')->orderBy('is_active','asc')->all();
return view('viewblade')->with('records',$records);

сега можете да показвате данни във viewblade като:

@foreach($records as $record){
   {{$record->fieldName}}
}
@endforeach
person Ram Bhandari    schedule 16.11.2018
comment
Дали това решение работи или не зависи от използваната система от бази данни. Не всички СУБД използват една и съща подредба по подразбиране, а някои дори позволяват специално третиране на NULL стойности. - person Namoshek; 16.11.2018

Можете да опитате по този начин,

 // specify second_column that will be used if multiple null values found

 $registrations = $registrations->sortByDesc('second_column')->sortBy('is_active');

 @foreach ($registrations->all() as $registration)
person Mayank Majithya    schedule 16.11.2018