Laravel withを使った時に特定のカラムだけ取得する方法

Laravel の with は、リレーションをもとにデータを取得する時に便利ですが、with で指定したテーブルの特定のカラムだけを取得したい場合があります。

その場合は以下のようにクロージャを引数に渡します。

User::query()
    ->with(['post' => function ($query) {
        $query->select('user_id', 'title');
    }])
    ->get()

一点注意が必要なのは、クロージャの$query->select ()に渡す第一引数は、外部キーである必要があります。