2016-11-09 13 views
0

私はアウトを注文しようとしていますが、2つの基準に基づいて、明け方は一番上に来て、次に上がり、一度は能動的ではありません。私はララベルの見解でそれをしようとしています。これは私のコードです。上向きまたは後ろ向きに基づいてソートすることはできますが、アクティブにすることはできません。あなたがソート基準としてカスタム値を使用できるようにLaravelビュー、2つの基準に基づいて並べ替え

@foreach($notes->sortBy('values') as $notification)  

    <tbody> 
     <tr> 
      <td> {{ $notification->website_url }} </td> 
      @if($notification->status('health') == 'up') 
      <td> {{ $notification->status('health') }} <span class="up"></span></td> 
      @else 
      <td> {{ $notification->status('health') }} <span class="down"></span></td> 
      @endif 
      <td> </td> 
      <td class="<?php echo $notification->active == 1 ? 'active' : '' ?>">       
       {{ $notification->active == 1 ? 'Yes' : 'No' }} 
      </td> 
      <td> 
       <a href="{{ route('notifications.edit', [$notification->id]) }}"> 
        <input type="submit" name="showmore" value="show more"/> 
       </a> 
      </td> 
      <td></td> 
     </tr> 
    </tbody> 

@endforeach 

答えて

0

sortBy()メソッドの引数は、実際に機能することができます。好ましくはコントローラ内にある。

$notes = $notes->sortBy(function ($note) { 
    return ($note->active ? '0' : '1') . ($note->status('health') == 'down' ? '0' : '1'); 
}); 

そして$notes次の順序で、この値によってソートされます。ダウンのためのアップアクティブ

  • 10のためのダウンアクティブ
  • 01ため

    1. 00アクティブではありません
    2. 11用アクティブでないアクティブ

    私はあなたが達成したい秩序を理解しているかどうかは分かりませんが、誠実であることを願います。その場合は、ソート関数の戻り値を調整するだけです。

  • +0

    あなたは申し分なく正しいです。私はあなたのコードを試してみました。それは動作するように見えます。結果はちょっと変わった考えです。あなたがループから '$ notes-> sortBy( '​​values')'を削除しましたか? –

    +0

    1、01up active .... 2、00 down active ... 3,11 up not active –

    +0

    ? '$ notes'だけでなければなりません。 – Paul

    関連する問題