まず、関連付けを定義する必要があります。例えば、注文(Order)モデルと商品(Product)モデルの関連付けを考えましょう。注文モデルには、商品に対するリレーションシップが定義されている必要があります。
// Orderモデル
public function products()
{
return $this->hasMany(Product::class);
}
このように、Orderモデルにproducts()
メソッドを定義し、hasMany()
メソッドを使用してProductモデルとのリレーションシップを定義します。
次に、関連するモデルの並び替えを行う方法を見てみましょう。
// 注文を価格で昇順に並び替える例
$orders = Order::with('products')->orderBy('price')->get();
上記の例では、with()
メソッドを使用して関連する商品を一緒にロードし、orderBy()
メソッドを使用してprice
カラムを基準に注文を昇順に並び替えています。
もうひとつの例を見てみましょう。
// 注文を商品名で降順に並び替える例
$orders = Order::with('products')->orderByDesc('products.name')->get();
この例では、orderByDesc()
メソッドを使用してproducts
テーブルのname
カラムを基準に注文を降順に並び替えています。
これらの例では、関連するモデルのリレーションシップを定義し、orderBy()
メソッドまたはorderByDesc()
メソッドを使用して並び替えの基準を指定しています。
上記のコード例を使って、Laravelで関連付けによる並び替えを実装することができます。必要に応じて、他のカラムや条件を使用して並び替えを行うこともできます。