Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DBIx::Class::ResultSouUser:Contributed Perl DBIx::Class::ResultSource::View(3)

NAME
       DBIx::Class::ResultSource::View - ResultSource object representing a
       view

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,
	   },
	 );

DESCRIPTION
       View object that	inherits from DBIx::Class::ResultSource

       This class extends ResultSource to add basic view support.

       A view has a "view_definition", which contains a	SQL query. The query
       can only	have parameters	if "is_virtual"	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 "deploy" in
       DBIx::Class::Schema unless you set "is_virtual" to true.

       Deploying the view does not translate it	between	different database
       syntaxes, so be careful what you	write in your view SQL.

       Virtual views ("is_virtual" true), are assumed to not exist in your
       database	as a real view.	The "view_definition" in this case replaces
       the view	name in	a FROM clause in a subselect.

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();

SQL EXAMPLES
       is_virtual set to false
	     $schema->resultset('Year2000CDs')->all();

	     SELECT cdid, artist, title	FROM year2000cds me

       is_virtual set to true
	     $schema->resultset('Year2000CDs')->all();

	     SELECT cdid, artist, title	FROM
	       (SELECT cdid, artist, title FROM	cd WHERE year ='2000') me

METHODS
   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.

   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.

   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.

OVERRIDDEN METHODS
   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.

OTHER METHODS
   new
       The constructor.

FURTHER	QUESTIONS?
       Check the list of additional DBIC resources.

COPYRIGHT AND LICENSE
       This module is free software copyright by the DBIx::Class (DBIC)
       authors.	You can	redistribute it	and/or modify it under the same	terms
       as the DBIx::Class library.

perl v5.24.1			  2016-06-20DBIx::Class::ResultSource::View(3)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | SQL EXAMPLES | METHODS | OVERRIDDEN METHODS | OTHER METHODS | FURTHER QUESTIONS? | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=DBIx::Class::ResultSource::View&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help