From: Jess Robinson Date: Thu, 19 Feb 2009 22:35:05 +0000 (+0000) Subject: POD fixing to explain views, and mention in main ResultSource. X-Git-Tag: v0.08240~88^2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=00be2e0bdac3e84d7da0b17e22aa25a8c249e173;p=dbsrgits%2FDBIx-Class.git POD fixing to explain views, and mention in main ResultSource. --- diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index bc88091..0d49c00 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -29,6 +29,8 @@ DBIx::Class::ResultSource - Result source object A ResultSource is a component of a schema from which results can be directly retrieved, most usually a table (see L) +Basic view support also exists, see L<. + =head1 METHODS =pod diff --git a/lib/DBIx/Class/ResultSource/View.pm b/lib/DBIx/Class/ResultSource/View.pm index 7f6bec7..f1ab5f1 100644 --- a/lib/DBIx/Class/ResultSource/View.pm +++ b/lib/DBIx/Class/ResultSource/View.pm @@ -13,24 +13,87 @@ __PACKAGE__->mk_group_accessors( =head1 NAME -DBIx::Class::ResultSource::Table - Table object +DBIx::Class::ResultSource::View - ResultSource object representing a view =head1 SYNOPSIS + package MyDB::Schema::Year2000CDs; + + use DBIx::Class::ResultSource::View; + + __PACKAGE__->load_components('Core'); + __PACKAGE__->table_class('DBIx::Class::ResultSource::View'); + + __PACKAGE__->table('year2000cds'); + __PACKAGE__->result_source_instance->is_virtual(1); + __PACKAGE__->result_source_instance->view_definition( + "SELECT cdid, artist, title FROM cd WHERE year ='2000'" + ); + =head1 DESCRIPTION -Table object that inherits from L +View object that inherits from L + +This class extends ResultSource to add basic view support. + +A view has a L, which contains an SQL query. The +query cannot have parameters. It may contain JOINs, sub selects and +any other SQL your database supports. + +View definition SQL is deployed to your database on +L unless you set L to true. + +Deploying the view does B translate it between different database +syntaxes, so be careful what you write in your view SQL. + +Virtual views (L unset or false), are assumed to not +exist in your database as a real view. The L in this +case replaces the view name in a FROM clause in a subselect. + +=head1 SQL EXAMPLES + +=over + +=item is_virtual set to true + + $schema->resultset('Year2000CDs')->all(); + + SELECT cdid, artist, title FROM year2000cds me + +=item is_virtual set to false + + $schema->resultset('Year2000CDs')->all(); + + SELECT cdid, artist, title FROM + (SELECT cdid, artist, title FROM cd WHERE year ='2000') me + +=back =head1 METHODS =head2 is_virtual -Attribute to declare a view as virtual. + __PACKAGE__->result_source_instance->is_virtual(1); + +Set to true for a virtual view, false or unset for a real +database-based view. + +=head2 view_definition + + __PACKAGE__->result_source_instance->view_definition( + "SELECT cdid, artist, title FROM cd WHERE year ='2000'" + ); + +An SQL query for your view. Will not be translated across database +syntaxes. + + +=head1 OVERRIDDEN METHODS =head2 from Returns the FROM entry for the table (i.e. the view name) -or the definition if this is a virtual view. +or the SQL as a subselect if this is a virtual view. =cut @@ -50,6 +113,8 @@ With Contributions from: Guillermo Roditi Egroditi@cpan.orgE +Jess Robinson + =head1 LICENSE You may distribute this code under the same terms as Perl itself.