2017-03-28 1 views
3

Ist es möglich, Join-Abfrage in Unterklasse von Hanami::Repository zu erstellen?Join Abfrage im Hanami-Modell

Ich habe festgestellt, dass this Pull-Request implementiert diese Funktion, aber ich kann es nicht in der aktuellen Codebasis finden.

+0

Hallo, 'Hanami-Modell 'basiert auf' rom-rb'. Werfen Sie einen Blick auf seine Dokumentation, um herauszufinden, um eine Join-Abfrage zu machen http://rom-rb.org/learn/sql/joins/ – NickGnd

Antwort

10

Hanami Modell basiert auf ROM, deshalb können Sie Relation#join Methode mit einer notwendigen Beziehung verwenden.

Dazu Sie join Verfahren für eine Beziehung und setzen andere Beziehung als Attribut aufrufen müssen:

class PostRepository < Hanami::Repository 
    associations do 
    has_many :comments 
    end 

    # ... 

    def join_example(date_range) 
    posts # => posts relation 
    comments # => comments relation 


    posts 
     .join(comments) # set relation object here 
     .where(comments[:created_at].qualified => date_range) 
     .as(Post).to_a 
    end 
end 

Und das ist alles.

Einige nützliche Links:

  1. rom-sql tests for left_join
  2. A real example
+0

Er kann dies auch als aggregate (: comments) .where (comments [: created_at ] .qualified => date_range) .as (Post) .to_a', da er die Eins-zu-Viele-Assoziation definiert hat. – Mereghost