laravel5.1のeloquentを使って、(親)カテゴリー・(子)サブカテゴリー並び替えする方法(リレーション先のレコードもorderbyしたい!)
(親)カテゴリー・(子)サブカテゴリーというテーブルがあり、リレーションを張っている。
両方ともorderby_idというカラムを持っていて、それぞれ昇順で並び替えて、表示したい!
(親)カテゴリーだけなら、普通に出来る。
1 2 |
$query = Category::query(); $categories = $query->orderby('orderby_id')->get(); |
(子)サブカテゴリーでもorderbyしたいが、どうやるんだろ?と思ったら、リレーションの設定時にorderbyするだけだった(動的には変更出来ないけど…。)
以下の設定をすれば、上記のコードのままでも(親)カテゴリーのorderby_id昇順・(子)サブカテゴリーのorderby_id昇順で表示された!
1 2 3 4 5 6 7 8 9 |
class Category extends Model { // このカテゴリーの下に紐付いているサブカテゴリー public function subcategories(){ return $this->hasMany('App\Subcategory', 'parent_category_id') ->orderBy('orderby_id'); // サブカテゴリーの表示順序 } } |