ホームページ >バックエンド開発 >PHPチュートリアル >Laravelの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 サイトの他の関連記事を参照してください。