=for comment POD_DERIVED_INDEX_GENERATED The following documentation is automatically generated. Please do not edit this file, but rather the original, inline with DBIx::Class::ResultSource::View at lib/DBIx/Class/ResultSource/View.pm (on the system that originally ran this). If you do edit this file, and don't want your changes to be removed, make sure you change the first line. =cut =head1 NAME DBIx::Class::ResultSource::View - ResultSource object representing a view =head1 SYNOPSIS package MyApp::Schema::Result::Year2000CDs; use base qw/DBIx::Class::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'" ); __PACKAGE__->add_columns( 'cdid' => { data_type => 'integer', is_auto_increment => 1, }, 'artist' => { data_type => 'integer', }, 'title' => { data_type => 'varchar', size => 100, }, ); =head1 DESCRIPTION View object that inherits from L This class extends ResultSource to add basic view support. A view has a L, which contains a SQL query. The query can only have parameters if L is set to true. 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 true), 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 EXAMPLES Having created the MyApp::Schema::Year2000CDs schema as shown in the SYNOPSIS above, you can then: $2000_cds = $schema->resultset('Year2000CDs') ->search() ->all(); $count = $schema->resultset('Year2000CDs') ->search() ->count(); If you modified the schema to include a placeholder __PACKAGE__->result_source_instance->view_definition( "SELECT cdid, artist, title FROM cd WHERE year = ?" ); and ensuring you have is_virtual set to true: __PACKAGE__->result_source_instance->is_virtual(1); You could now say: $2001_cds = $schema->resultset('Year2000CDs') ->search({}, { bind => [2001] }) ->all(); $count = $schema->resultset('Year2000CDs') ->search({}, { bind => [2001] }) ->count(); =head1 SQL EXAMPLES =over 4 =item is_virtual set to false $schema->resultset('Year2000CDs')->all(); SELECT cdid, artist, title FROM year2000cds me =item is_virtual set to true $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 __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. =head2 deploy_depends_on __PACKAGE__->result_source_instance->deploy_depends_on( ["MyApp::Schema::Result::Year","MyApp::Schema::Result::CD"] ); Specify the views (and only the views) that this view depends on. Pass this an array reference of fully qualified result classes. =head1 OVERRIDDEN METHODS =head2 from Returns the FROM entry for the table (i.e. the view name) or the SQL as a subselect if this is a virtual view. =head1 OTHER METHODS =head2 new The constructor. =head1 INHERITED METHODS =over 4 =item L L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L =back =head1 FURTHER QUESTIONS? Check the list of L. =head1 COPYRIGHT AND LICENSE This module is free software L by the L. You can redistribute it and/or modify it under the same terms as the L.