ホームページ > PHPフレームワーク > Laravel > この記事では、Laravel でページ分割された結果にカスタム属性を追加する方法について説明します。

この記事では、Laravel でページ分割された結果にカスタム属性を追加する方法について説明します。

PHPz
リリース: 2023-04-03 18:50:42
オリジナル
845 人が閲覧しました

Laravel では、ページネーションは非常によく使用される関数です。 Laravel は、ページネーションを簡単に実装できる便利なページネーション クラスを提供します。ただし、場合によっては、レコードの総数や検索キーワードなど、ページ分割された結果にさらに属性を追加する必要がある場合があります。この記事では、Laravel でページ分割された結果のカスタム プロパティを追加する方法を説明します。

まず、Laravel のページング機能を簡単に見てみましょう。 paginate() メソッドを使用して、データベースからページ分割されたデータを取得できます。例:

$users = DB::table('users')->paginate(10);
ログイン後にコピー

このコードは、users という名前のデータベース テーブルから 10 個のエントリを取得します。レコードを作成し、1 ページあたり 10 レコードのページに整理します。これらのレコードをビューでレンダリングし、ページ番号の下にページネーション リンクを表示できるようになりました。

ただし、場合によっては、レコードの合計数など、ページ分割された結果にさらに属性を追加する必要があります。これを実現するには、Laravel のクエリ ビルダーを使用します。次のコードを考えてみましょう:

$users = DB::table('users')->select(\DB::raw('count(*) as total'))->paginate(10);
ログイン後にコピー

この例では、 total という名前の列を返す select 句をクエリ ビルダーに追加しました。その値はクエリ結果の合計行数。これで、次のようにビューでこのプロパティにアクセスできるようになります。

{{ $users->total }}
ログイン後にコピー

同様に、クエリ ビルダーを使用して他のプロパティを追加できます。たとえば、ページ分割された結果に検索キーワードを追加する場合は、上記のコード例を次のように変更できます。

$keyword = 'John';
$users = DB::table('users')
            ->select(\DB::raw('count(*) as total'))
            ->where('name', 'like', "%{$keyword}%")
            ->paginate(10);
$users->keyword = $keyword;
ログイン後にコピー

この例では、別のクエリ ビルダー関数 where を追加しました。の場合、キーワード John の名前を含む行のみが結果に返されます。次に、キーワードを $users オブジェクトのカスタム プロパティ keyword に保存し、ビューでアクセスできるようにします。

{{ $users->keyword }}
ログイン後にコピー

この方法で、次のように追加できます。ページ分割された結果に対する任意の数およびタイプのプロパティ。ページ分割された結果オブジェクトのパブリック プロパティにアクセスすることで、これらのカスタム プロパティにアクセスできることに注意してください。

この記事では、Laravel でページ分割された結果にカスタム プロパティを追加する方法について説明しました。これは、クエリ ビルダーの select 関数と where 関数を使用して実現します。これらのメソッドは、paginate() 関数だけでなく、他のクエリ ビルダー関数とも連携します。

この記事がお役に立てば幸いです!

以上がこの記事では、Laravel でページ分割された結果にカスタム属性を追加する方法について説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート