1DBIx::Class::ResultSourUcsee:r:VCioenwt(r3i)buted Perl DDoBcIuxm:e:nCtlaatsiso:n:ResultSource::View(3)
2
3
4
6 DBIx::Class::ResultSource::View - ResultSource object representing a
7 view
8
10 package MyDB::Schema::Result::Year2000CDs;
11
12 use base qw/DBIx::Class::Core/;
13
14 __PACKAGE__->table_class('DBIx::Class::ResultSource::View');
15
16 __PACKAGE__->table('year2000cds');
17 __PACKAGE__->result_source_instance->is_virtual(1);
18 __PACKAGE__->result_source_instance->view_definition(
19 "SELECT cdid, artist, title FROM cd WHERE year ='2000'"
20 );
21 __PACKAGE__->add_columns(
22 'cdid' => {
23 data_type => 'integer',
24 is_auto_increment => 1,
25 },
26 'artist' => {
27 data_type => 'integer',
28 },
29 'title' => {
30 data_type => 'varchar',
31 size => 100,
32 },
33 );
34
36 View object that inherits from DBIx::Class::ResultSource
37
38 This class extends ResultSource to add basic view support.
39
40 A view has a "view_definition", which contains a SQL query. The query
41 can only have parameters if "is_virtual" is set to true. It may contain
42 JOINs, sub selects and any other SQL your database supports.
43
44 View definition SQL is deployed to your database on "deploy" in
45 DBIx::Class::Schema unless you set "is_virtual" to true.
46
47 Deploying the view does not translate it between different database
48 syntaxes, so be careful what you write in your view SQL.
49
50 Virtual views ("is_virtual" true), are assumed to not exist in your
51 database as a real view. The "view_definition" in this case replaces
52 the view name in a FROM clause in a subselect.
53
55 Having created the MyDB::Schema::Year2000CDs schema as shown in the
56 SYNOPSIS above, you can then:
57
58 $2000_cds = $schema->resultset('Year2000CDs')
59 ->search()
60 ->all();
61 $count = $schema->resultset('Year2000CDs')
62 ->search()
63 ->count();
64
65 If you modified the schema to include a placeholder
66
67 __PACKAGE__->result_source_instance->view_definition(
68 "SELECT cdid, artist, title FROM cd WHERE year ='?'"
69 );
70
71 and ensuring you have is_virtual set to true:
72
73 __PACKAGE__->result_source_instance->is_virtual(1);
74
75 You could now say:
76
77 $2001_cds = $schema->resultset('Year2000CDs')
78 ->search({}, { bind => [2001] })
79 ->all();
80 $count = $schema->resultset('Year2000CDs')
81 ->search({}, { bind => [2001] })
82 ->count();
83
85 is_virtual set to false
86 $schema->resultset('Year2000CDs')->all();
87
88 SELECT cdid, artist, title FROM year2000cds me
89
90 is_virtual set to true
91 $schema->resultset('Year2000CDs')->all();
92
93 SELECT cdid, artist, title FROM
94 (SELECT cdid, artist, title FROM cd WHERE year ='2000') me
95
97 is_virtual
98 __PACKAGE__->result_source_instance->is_virtual(1);
99
100 Set to true for a virtual view, false or unset for a real database-
101 based view.
102
103 view_definition
104 __PACKAGE__->result_source_instance->view_definition(
105 "SELECT cdid, artist, title FROM cd WHERE year ='2000'"
106 );
107
108 An SQL query for your view. Will not be translated across database
109 syntaxes.
110
112 from
113 Returns the FROM entry for the table (i.e. the view name) or the SQL as
114 a subselect if this is a virtual view.
115
117 Matt S. Trout <mst@shadowcatsystems.co.uk>
118
119 With Contributions from:
120
121 Guillermo Roditi <groditi@cpan.org>
122
123 Jess Robinson <castaway@desert-island.me.uk>
124
125 Wallace Reis <wreis@cpan.org>
126
128 You may distribute this code under the same terms as Perl itself.
129
130
131
132perl v5.12.0 2010-05-12DBIx::Class::ResultSource::View(3)