Angenommen, Modell X hat viele Ys und Modell Y gehört zu X. Jedes Y hat ein Datum, wenn es in die Datenbank eingefügt wurde. Nun, ist es möglich, alle Xs zu laden und eifrig letzte Y für jedes von X zu laden (nur das letzte, weil jedes X Bazzilionen von Ys hat)? JaEager loading letzten untergeordneten Datensatz
4
A
Antwort
4
,
Lets diesem Beispiel nehmen
class Song < ActiveRecord::Base
has_many :votes
end
class Vote < ActiveRecord::Base
belongs_to :song
end
eine neue Zuordnung zu dem Lied hinzufügen:
has_one :last_vote, :class_name => 'Vote', :order => 'created_at DESC'
dieser neue Verein wird die zuletzt erstellte Abstimmung für ein Lied immer wieder zurückkehren .
Um eifrig Last es:
songs = Song.find(:all, :conditions => 'artist_name = "frank"', :include => :last_vote)
0
Die bisherige Lösung ist wirklich toll! Ich suche jedoch nach einem weiteren Feature: Ist es möglich, den letzten untergeordneten Datensatz vor einem bestimmten Datum zu laden? Dies ist erforderlich, damit meine Benutzer die Voten eines Verlaufs und eines Songs durchsuchen können (mit Links zum vorherigen und nächsten Tag).
Verwandte Themen
- 1. Lazy Loading vs Eager Loading
- 2. Schienen 3: Lazy Loading versus Eager Loading
- 3. Lazy loading, Deferred Loading und Eager Loading im Entity-Framework
- 4. Bookshelf.js Eager Loading Dritte Tabelle
- 5. Eager loading mit has_many durch
- 6. NHibernate Eager Loading Sammlungen + Paging
- 7. Wann Lazy Loading/Eager Loading im Winterschlaf verwenden?
- 8. Entity Framework Eager Loading Multiple Levels Exception
- 9. Laravel Eager Loading - Laden nur bestimmte Spalten
- 10. Entity Framework - Eager Loading verwandte Entitäten
- 11. Laravel Model Eager loading und bestellung
- 12. Laravel 4.2 n + 1 ohne eager loading
- 13. Eager Loading Aggregat Wurzeln mit Entity Framework
- 14. Rails - eager loading mit has_many_through Verein
- 15. Verschiedene Ergebnisse mit Laravel Lazy Eager Loading
- 16. Eager Laden untergeordneten Sammlung mit NHibernate
- 17. Oracle letzten Datensatz auswählen
- 18. Letzten aktualisierten Datensatz abrufen
- 19. Entitätsframework-Code Erste Suche vs SingleOrDefault (Eager Loading)
- 20. Laravel Eloquent Eager Loading: Beitreten gleiche Tabelle zweimal
- 21. Strategische Eager Loading für viele-zu-viele Beziehungen in Datamapper?
- 22. Wie verwende ich withTrashed, wenn ich mit eager loading abfrage?
- 23. Entity Framework - Was ist der Unterschied zwischen der Verwendung von Include/eager loading und lazy loading?
- 24. Warum Hibernate @OneToOne und @ManyToOne verwendet Eager Loading und @OneToMany und @ManyToMany verwendet Lazy Loading?
- 25. FirstorDefault() verursacht Lazy Loading oder Eager Loading für Linq zu SQL
- 26. Löschen von Datensatz mit untergeordneten Datensätzen
- 27. jquery Element zur letzten untergeordneten Position verschieben
- 28. Mysql Query Group nach letzten Datensatz und ersten Datensatz
- 29. erstes Element aus der Beziehung mit `Faulen Eager Loading` [Laravel 5.2]
- 30. Verknüpfungen nach dem letzten has_many löschen: Durch Datensatz gelöscht
Es wäre interessant, den von dieser Abfrage erzeugten Join zu sehen. :) Es wird wahrscheinlich am besten sein, ein wenig zu denormalisieren und ein Feld zu Song hinzuzufügen, last_vote_id, das jedes Mal aktualisiert wird, wenn eine neue Stimme hinzugefügt wird. Just: include =>: last_vote danach, keine überflüssigen Datenladungen (oder GROUP BY, falls smart) benötigt. – vladr
Richtig, mein vorstehender Code ist völlig ungetestet. Vlad, deine Lösung klingt wie eine Verbesserung gegenüber meiner. – Tilendor
Dies wird immer noch alle Stimmen für jeden Song vorladen, nicht nur den ersten. Dies erzeugt Abfrage wie SELECT "Stimmen". * FROM "Stimmen" WHERE "Stimmen". "Song_ID" IN (1,2,3,4,5) Reihenfolge von erstellt_AT DESC –