On Friday, April 7, 2017 at 3:45:39 PM UTC-7, Jeremy Evans wrote:
>
> Currently, models can have any possible dataset. Almost all models use
> dataset that selects from a single table, but there are models that use a
> joined dataset. The most common case for model joined datasets is models
> using the class_table_inheritance plugin.
>
> In most cases, it should not be necessary to use a joined dataset.
> Instead, the joined dataset can be wrapped in a subquery, and the main
> query just selects from the subquery. For example, this model with a joined
> dataset:
>
> class Foo < Sequel::Model(DB[:foos].join(:bars,
> :id=>:bar_id).select_all(:foos).select_append{bars[:name].as(:bar_name)})
> SELECT foos.*, bars.name FROM foos INNER JOIN bars ON (bars.id =
> foos.bar_id)
> end
>
> can be changed to:
>
> class Foo < Sequel::Model(DB[:foos].join(:bars,
> :id=>:bar_id).select_all(:foos).select_append{bars[:name].as(:bar_name)})
> SELECT * FROM (SELECT foos.*, bars.name FROM foos INNER JOIN bars ON (
> bars.id = foos.bar_id)) AS foos
> end
>
> One advantage of this is that you can now use unqualified values when
> filtering:
>
> Foo.first(:id=>1)
>
> I recently added support to the class_table_inheritance plugin for an
> :alias option that automatically uses a subquery in this manner.
>
> Is there any user who uses joined datasets for models and would not be
> able to deal with wrapping them in a subquery as described above? If so,
> please describe your situation and why wrapping in a subquery will not
> work, so I can decide whether that is something we want to support going
> forward.
>
I didn't get any response about this, but just yesterday someone mentioned
an issue on IRC that was caused by a joined model dataset and prevented if
the dataset was wrapped in a subquery. So I've committed a change that
deprecates using joined datasets as model datasets:
https://github.com/jeremyevans/sequel/commit/8908bb1b03e62bc5316949ab115c51b993949df1
Thanks,
Jeremy
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.