ホームページ > バックエンド開発 > PHPチュートリアル > Eloquent の `with()` 関数を使用して関連テーブルから特定の列を選択する方法

Eloquent の `with()` 関数を使用して関連テーブルから特定の列を選択する方法

Barbara Streisand
リリース: 2024-12-26 07:28:31
オリジナル
186 人が閲覧しました

How to Select Specific Columns from Related Tables Using Eloquent's `with()` Function?

Eloquent の "With()" 関数を使用して関連テーブルから特定の列を取得する

Eloquent の "with()" 関数を使用して結合を実行する場合、関連テーブルから特定の列を取得することができます。これは、結合テーブルから列のサブセットのみが必要なシナリオで役立ちます。

問題:

User と Post という 2 つのテーブルがあるシナリオを考えてみましょう。 1 人のユーザーが複数の投稿を持つことができ、各投稿は 1 人のユーザーに属します。

初期アプローチ:

デフォルトの "with('user')" 構文を使用すると、次のクエリが実行されます:

select * from `posts`
select * from `users` where `users`.`id` in (<1>, <2>)
ログイン後にコピー

ただし、" 「id」や「username」などの「users」テーブルの場合、上記のアプローチは適用されません。

解決策 I: "with()" の 2 番目の引数として配列を使用する:

"with()" の 2 番目の引数として配列を渡す関連テーブルから取得する列を指定できます。ただし、この方法は最初のテーブルの列を指定する場合にのみ機能します。

解決策 II: "with()" の 2 番目の引数としてクロージャを使用する:

To 2 番目のテーブルから特定の列を取得するには、「with()」配列の 2 番目の引数としてクロージャー関数を使用します。この手法を使用すると、列を選択するためのカスタム ロジックを実装できます。

Post::query()
    ->with(['user' => function ($query) {
        $query->select('id', 'username');
    }])
    ->get()
ログイン後にコピー

この手法では、次のクエリが実行されます。

select * from `posts`
select id, username from `users` where `users`.`id` in (<1>, <2>)
ログイン後にコピー

注:目的のテーブルを取得するには、関連テーブルのキー (この例では「id」) を $query->select() の最初のパラメータにする必要があります。結果。

以上がEloquent の `with()` 関数を使用して関連テーブルから特定の列を選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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