laravel/eloquentのwithでカラム指定しつつリレーション先の子テーブルも取得
っていう言い方(タイトル)でいいのかわからんのだけども、
eloquentのwithでhasmanyの中間テーブル介して
postをlikeしているuserとuserの子テーブルであるprofileも参照しつつ
userのemailとかの情報は除外したいって時です。
よくある例だとは思うので
絶対方法あるはずだけども
どう書けば良いのか(調べたらいいか)分からず
結構苦戦したのでメモしておきます。
単純にカラム指定
マニュアルにもあるので調べればすぐでますが
$query = Post::query();
$query->with([
'likes.user:id,name'
]);
こんな感じでいける。
でも子テーブルの情報も参照したいのです。
色々試して下記でいけました。
カラム指定しつつ(除外)子テーブルも
$query = Post::query();
$query->with([
'likes.user' => function ($query) {
$query->select(['id', "name"])->with("profile");
},
]);
例によってこれで正しいのかは知らん。
ディスカッション
コメント一覧
まだ、コメントがありません