ホームページ >バックエンド開発 >PHPチュートリアル >LaravelのEloquent `with()`関数で特定の列を選択する方法?

LaravelのEloquent `with()`関数で特定の列を選択する方法?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-16 00:41:16925ブラウズ

How to Select Specific Columns in Laravel's Eloquent `with()` Function?

Eloquent の "With()" 関数で特定の列を指定する

Laravel の Eloquent ORM の "with()" 関数を利用して複数のテーブルから関連データをフェッチする場合、 2 番目のテーブルの特定の列のみが必要な状況が発生する場合があります。この記事では、クエリ ビルダーに頼らずにこれを実現する方法について詳しく説明します。

「User」と「Post」という 2 つのテーブルがあり、それらの間に 1 対多の関係があるシナリオを考えてみましょう。 User モデルでは、Post モデルとの "hasMany" 関係を定義します:

public function post()
{
    return $this->hasmany('post');
}

同様に、Post モデルでは、User モデルとの "belongsTo" 関係を確立します:

public function user()
{
    return $this->belongsTo('user');
}

ただし、「with()」関数を使用してこれら 2 つのテーブルを結合すると、デフォルトで 2 番目のテーブルからすべての列が選択されることに気づくかもしれません。 「User」テーブルから「id」や「username」などの特定の列のみを取得したいとします。次のコード スニペットでは十分ではありません:

Post::query()
    ->with('user')
    ->get();

目的を達成するには、「with()」関数に渡される配列の 2 番目のインデックスとしてクロージャ関数を渡すことができます:

Post::query()
    ->with(['user' => function ($query) {
        $query->select('id', 'username');
    }])
    ->get()

このクロージャーを使用すると、2 番目のテーブルから取得する列を指定できます。この例では、「User」テーブルから「id」列と「username」列のみが選択されます。

注: 回答で述べたように、主キー ("id " この場合) 結果を適切に取得するには、$query->select() メソッドの最初のパラメータにする必要があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。