go-pg / pg

Golang ORM with focus on PostgreSQL features and performance
https://pg.uptrace.dev/
BSD 2-Clause "Simplified" License
5.67k stars 404 forks source link

Is there a way to filter by joined tables #1905

Open kbonevska opened 3 years ago

kbonevska commented 3 years ago

Discussed in https://github.com/go-pg/pg/discussions/1904

Originally posted by **kbonevska** August 4, 2021 Hey, there guys, I've been using your project for some time and it seems amazing by now. Thank you for your effort. I was wondering if I am missing something and there is actually a way to filter by joined tables. So far following the examples, it doesn`t seem possible by using Relation(). ``` type Product struct { ID int64 Name string Tags []GrTag `pg:",many2many:product_tags"` } ``` In the following model, while selecting products with their tags, how can I sort by tag names, I tried something like ``` DB.Model(&p).Column("product.*"). Relation("Tags", func ( q *pg.Query)(*pg.Query, error){ return q.Where("tag.name = 'tag 1'"), nil }) ``` but this will filter out just tags by the name, not products by the tag name