Laravel 8でモデルフィルタリングする方法


  1. モデルにスコープを定義する方法: Laravelでは、モデルにスコープを定義することで、特定の条件に基づいてモデルをフィルタリングすることができます。例えば、以下のようにスコープを定義します。

    // Userモデルのスコープを定義
    public function scopeActive($query)
    {
       return $query->where('active', true);
    }

    これにより、User::active()というメソッドが利用可能になり、アクティブなユーザーのみを取得することができます。

  2. クエリビルダを使用してフィルタリングする方法: クエリビルダを使って、モデルのフィルタリングを行うこともできます。例えば、以下のようにクエリビルダを利用してフィルタリングします。

    $users = DB::table('users')
               ->where('active', true)
               ->get();

    この例では、usersテーブルからactiveカラムがtrueであるユーザーを取得しています。

  3. ローカルスコープを使用してフィルタリングする方法: ローカルスコープを使って、特定の条件に基づいてモデルをフィルタリングすることもできます。以下に例を示します。

    // Userモデルのローカルスコープを定義
    public function scopeActive($query)
    {
       return $query->where('active', true);
    }
    // ローカルスコープを呼び出してフィルタリング
    $users = User::active()->get();

    この方法では、User::active()というメソッドを使ってアクティブなユーザーを取得します。

以上がLaravel 8でモデルのフィルタリングを行う方法のいくつかです。これらの方法を使用することで、特定の条件に基づいてデータを取得することができます。