Posts
とComments
のテーブルがあり、各投稿に複数のコメントを付けることができます。ユーザーがログインしている場合のみリレーションシップを返しますか?
すべての投稿とログインしたすべてのユーザーのコメントを取得するクエリを作成します。ここで
は、私がこれまで持っているものです。
$posts = Post::select('posts.*')
->with(['comments' => function($query) {
if (Auth::check()) {
$query->where('user_id', Auth::user()->id);
}
}])
->get();
そして、私のPost.php
モデルクラスは次のようになります。
class Post extends Model
{
public function comments()
{
return $this->hasMany('App\Comment');
}
}
ユーザーがログインしているとき、クエリが正しい結果を返します
しかし、ユーザがでない場合、がログインしていれば、nを返す代わりにすべてのユーザのコメントを返しますothing(ユーザーはログインしているためコメントがありません)。
どうすればこの問題を解決できますか?
返す結果はAPI用であるため、ブレードビューは使用しません。そのため、結果を熱心に読み込む必要があります。 – user7863944