So habe ich einige Probleme herauszufinden, wie man einen Feed-Stil mysql aufrufen, und ich weiß nicht, ob es ein eloquent Problem oder ein MySQL-Problem ist. Ich bin sicher, dass es in beiden möglich ist und ich brauche nur Hilfe.Laravel Eloquent Join vs. Inner Join?
So habe ich einen Benutzer und sie gehen auf ihre Feed-Seite, auf dieser Seite zeigt es Zeug von ihren Freunden (Freunde Stimmen, Freunde Kommentare, Freunde Status-Updates). Also sag ich Tom, Tim und Taylor als meine Freunde und ich muss alle ihre Stimmen, Kommentare, Statusupdates bekommen. Wie gehe ich vor? Ich habe eine Liste aller Freunde nach ID-Nummer, und ich habe Tabellen für jedes der Ereignisse (Abstimmungen, Kommentare, Statusaktualisierungen), in denen die ID gespeichert ist, um sie mit dem Benutzer zu verknüpfen. Wie kann ich all diese Informationen auf einmal erhalten, damit ich sie in einem Feed in Form von anzeigen kann.
Tim kommentiert "Cool"
Taylor Said "Woot ersten Status-Update ~!"
Taylor abgestimmt über „Bestes Wettbewerb aller Zeiten“
bearbeiten @damiani So, nachdem die Modelländerungen zu tun Ich habe Code wie diese, und es tut geben die richtigen Zeilen
$friends_votes = $user->friends()->join('votes', 'votes.userId', '=', 'friend.friendId')->orderBy('created_at', 'DESC')->get(['votes.*']);
$friends_comments = $user->friends()->join('comments', 'comments.userId', '=', 'friend.friendId')->orderBy('created_at', 'DESC')->get(['comments.*']);
$friends_status = $user->friends()->join('status', 'status.userId', '=', 'friend.friendId')->orderBy('created_at', 'DESC')->get(['status.*']);
Aber ich möchte sie alle auf einmal geschehen, dies liegt daran, dass mysql tausende Datensätze in der Reihenfolge sortiert 100x schneller ist, als php 3 Listen zu nehmen, sie zusammenzufassen und dann zu tun. Irgendwelche Ideen?
Wie speichern Sie diese 'Liste aller Freunde nach ID-Nummer' .... befindet es sich in einer' friends' Tabelle oder ist es eine kommagetrennte Liste in einer Spalte in Ihrer 'users' Tabelle? Wenn letzteres, dann normalisieren Sie Ihre Datenbank, so dass Sie dann Modellbeziehungen verwenden können (hasManyThrough()) –
Sie können eine Ansicht in Ihrer db und ein Eloquent 'Modell' dafür erstellen. Dann hol dir einfach alle Events, die du willst. Andernfalls könnten Sie 'polymorphe' Relationen verwenden: laravel.com/docs/eloquent#polymorphic-relations –
Bitte fügen Sie nicht die richtige Antwort auf die ursprüngliche Frage, es wird alles verschwommen dann – challet