Fey::Meta::Attribute::FromSelect - An attribute metaclass for SELECT-based attributes
version 0.47
package MyApp::Song; has average_rating => ( metaclass => 'FromSelect', is => 'ro', isa => 'Float', select => $select, bind_params => sub { $_[0]->song_id() }, );
This attribute metaclass allows you to set an attribute's default based on a SELECT query and optional bound parameters. This is a fairly common need when writing ORM-based classes.
SELECT
This metaclass accepts two additional parameters in addition to the normal Moose attribute options.
select
This must do the Fey::Role::SQL::ReturnsData role. It is required.
bind_params
This must be a subroutine reference, which when called will return an array of bind parameters for the query. This subref will be called as a method on the object which has the attribute. This is an optional parameter.
Note that this metaclass overrides any value you provide for "default" with a subroutine that executes the query and gets the value it returns.
This class adds a few methods to those provided by Moose::Meta::Attribute:
Moose::Meta::Attribute
Returns the query object associated with this attribute.
Returns the bind_params subroutine reference associated with this attribute, if any.
By default, the SELECT is expected to return just a single row with one column. However, if you set the type of the attribute to ArrayRef (or a subtype), then the select can return multiple rows, still with a single column.
Dave Rolsky <autarch@urth.org>
This software is copyright (c) 2011 - 2015 by Dave Rolsky.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Fey::ORM, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Fey::ORM
CPAN shell
perl -MCPAN -e shell install Fey::ORM
For more information on module installation, please visit the detailed CPAN module installation guide.