2017-06-05 9 views
2

私は、関係hasManyを通じて名前順に並べ替えています。 2番目のforeachで注文しても動作しない場合、私は最初のforeachでそれを行わなければならないことを理解していますが、どうすればいいですか? 私はコントローラーでそれを行うことができますが、私はそのことを知りません。ビューでLaravel 5.4 OrderBy with a relationship

:タグで

​​

関係:これは私のコードです

public function langs() 
{ 
    return $this->hasMany('App\Models\LangTag'); 
} 

LangTag関係:

public function tag() 
{ 
    return $this->belongsTo('App\Models\Tag'); 
} 

コントローラ:

public function index() 
    { 
     $data['tags'] = Tag::paginate(25); 
     return view('panel.tags.index', compact('data')); 
    } 

答えて

0
public function langs() 
{ 
    return $this->hasMany('App\Models\LangTag')->orderBy('name'); 
} 

またはこのような:

public function index() 
{ 
    $data['tags'] = Tag::all()->langs()->orderBy('name')->paginate(25); 
    return view('panel.tags.index', compact('data')); 
} 
0

あなたは熱心な負荷をすることができ、それはあなたがタグをフェッチしながら、注文しています。クリーナーソリューション。

public function index() 
{ 
    $tags = Tag::with('langs')->paginate(25); 

    return view('panel.tags.index', compact('tags')); 
} 

@foreach($tags as $tag) 
<tr> 
    <td>{{ $tag->created_at->format('d-m-Y') }}</td> 
    <td> 
     @foreach($tag->langs->sortBy('name') as $lang) 
      @include('panel.partials.list_name', [ 
       'value' => $lang, 
       'route' => 'tags.edit', 
       'id' => $tag->id, 
       'name' => $lang->name 
      ]) 
     @endforeach 
    </td> 
</tr> 
@endforeach 
+0

ありがとうございますSandeesh、しかし動作しません。ただ何も起こりません。 – nature

+0

@natureもっと正確になりますか?これはあなたのコードを熱心に読み込んで翻訳したものです。コントローラとビューコードの両方を変更しましたか? – Sandeesh

+0

はい、コントローラとビューの両方を、あなたのベストクリーンコードと同じように変更しました。しかし、結果は同じです。名前でソートされていません。はい、熱心な読み込みが追加されます。 – nature