Ich habe eine Posts
und eine Comments
Tabelle, wo jeder Beitrag mehrere Kommentare haben kann.Gibt die Beziehung nur zurück, wenn der Benutzer angemeldet ist?
Ich möchte eine Abfrage erstellen, die alle Beiträge erhält, und auch alle eingeloggten Benutzerkommentare. Hier
ist das, was ich bisher:
$posts = Post::select('posts.*')
->with(['comments' => function($query) {
if (Auth::check()) {
$query->where('user_id', Auth::user()->id);
}
}])
->get();
Und mein Post.php
Modellklasse sieht wie folgt aus:.
class Post extends Model
{
public function comments()
{
return $this->hasMany('App\Comment');
}
}
Die Abfrage die korrekten Ergebnisse zurückgibt, wenn der Benutzer angemeldet ist
Aber wenn der Benutzer nicht angemeldet ist, gibt es die Kommentare aller Benutzer zurück, anstatt n zurückzugeben othing (weil der Benutzer angemeldet ist und daher keine Kommentare hat).
Wie kann ich das beheben?
Ich sollte erwähnen, dass die Ergebnisse, die ich zurückgeben möchte, für meine API sind, und deshalb verwende ich keine Blade-Ansichten. Aus diesem Grund muss ich die Ergebnisse eifrig laden. – user7863944