Liste 10 Beiträge pro Seite, und diese 10 Beiträge von verschiedenen Autoren sein sollte
Post::inRandomOrder()->groupBy('user_id')->take(10)->get();
ich getestet habe es und es wird dir geben, was du willst. Es wird jedoch immer den gleichen Beitrag für jeden Autor geben. Autoren werden also immer zufällig sein, aber der Beitrag jedes Autors wird immer derselbe sein.
Eine andere Lösung ist hasOne
Beziehung zu verwenden:
public function singlePost() {
return $this->hasOne(Post::class);
}
Und dann:
Author::inRandomOrder()->with('singlePost')->take(10)->get();
Wenn Sie eine zufällige Post für 10 zufällige Autoren erhalten möchten, erstellen Sie eine andere Beziehung:
public function randomPost() {
return $this->hasOne(Post::class)->inRandomOrder();
}
Und dann:
Seien Sie vorsichtig, denn inRandomOrder()
ist ziemlich langsam und wenn Sie es verschachteln, kann es zu viel Zeit dauern, um die Daten zu bekommen, wenn Tabellen groß sind.
Ich würde normalerweise die ersten 10 Autoren mit ihren Beiträgen auswählen und einen pro Autor auswählen. – apokryfos
Sie können die Beitragsgruppe nach author_id auswählen und die ersten 10 nehmen. – Sovon