2016-04-22 13 views
1

すべてのメッセージを含むメッセージテーブルがあります。私は固定されたメッセージを上に、そして普通のメッセージは後にしたい。私はこれを正常に私のクエリのorderBy()メソッドで行うことができました。Laravel - Foreachループ - 結果の種類に関する特定のメッセージを表示

しかし、ピン留めされたすべてのメッセージに対して、特定のメッセージを表示したいとします。私は固定されたメッセージの上部にヘッダーを、通常のメッセージの上部にヘッダーを付けて、固定されたメッセージと通常のメッセージが存在することをユーザーに知らせたいと考えています。

例:

マイクエリ:

$rows = Messages::where('active', true)->orderBy('pinned', 'desc')->get(); 

マイビュー

私は

Message text 3 
Message text 1 
Message text 2 

は、私が "固定" といくつかのメッセージを持って見る何

@foreach ($rows as $row) 
    {{ $row->message }} 
@endforeach 

データベースの列。だから、私はピン止めのものを一番上に説明付きで表示したい。このような何か:

Pinned 
---------- 
Message text 3 
---------- 
Normal 
---------- 
Message text 1 
Message text 2 

私はorderBy()を試してみました、それが通常の状態に固定さから、それを注文するという点で、かなり良い働いて、私はそれが「固定」と「ノーマル」のメッセージを表示することができません。これどうやってするの?

+0

使用についてどのような条件を。 – aldrin27

+0

'print_r($行)できますか? ' – aldrin27

答えて

1

この(true/falseまたはものは何でも使うに1/0を変更する)のような何か試してみてください:本当の@foreach一部である場合

@if(count($pinned) > 0) 
    Pinned 

    @foreach ($pinned as $row) 
     {{ $row->message }} 
    @endforeach 
@endif 

@if(count($normal) > 0) 
    Normal 

    @foreach ($normal as $row) 
     {{ $row->message }} 
    @endforeach 
@endif 

コントローラで:

ビューで
$pinned = $rows->where('pinned', 1); 
$normal = $rows->where('pinned', 0); 

をコードの重複を避けるため、@foreachの代わりにpartial and @eachを使用してください。

代替

@foreach ($rows as $row) 
    @if ($row->pinned === 1 && !isset($pinnedShown)) 
     Pinned 
     {{ $pinnedShown = true }} 
    @endif 

    @if ($row->pinned === 0 && !isset($normalShown)) 
     Normal 
     {{ $normalShown = true }} 
    @endif 

    {{ $row->message }} 
@endforeach 

ショート代替

ない非常に読みやすい、あなただけの短いコードが必要な場合は、このようなものを使用します。

@foreach ($rows as $row) 
    <?php !($row->pinned == 1 && !isset($pin)) ? : $pin = call_user_func(function(){ echo 'Pinned'; return 1; }); 
      !($row->pinned == 0 && !isset($nor)) ? : $nor = call_user_func(function(){ echo 'Normal'; return 1; }); ?> 
    {{ $row->message }} 
@endforeach 
+0

申し訳ありませんが、これは見えませんでした。私は最初の方法で '@ each'のブレード構文を使いました。ありがとうございました! –

関連する問題