NAME Mojo::DB::Results::Role::Struct - Database query results as structs SYNOPSIS use Mojo::SQLite; my $sqlite = Mojo::SQLite->new(...); my $results = $sqlite->db->query('SELECT * FROM "table" WHERE "foo" = ?', 42); my $struct = $results->with_roles('Mojo::DB::Results::Role::Struct')->structs->first; my $bar = $struct->bar; # dies unless column "bar" exists use Mojo::Pg; my $pg = Mojo::Pg->new(...)->with_roles('Mojo::DB::Role::ResultsRoles'); push @{$pg->results_roles}, 'Mojo::DB::Results::Role::Struct'; my $results = $pg->db->query('SELECT "foo", "bar" FROM "table"'); foreach my $row ($results->structs->each) { my $foo = $row->foo; my $bar = $row->baz; # dies } DESCRIPTION This role can be applied to a results object for Mojo::Pg or similar database APIs. It provides "struct" and "structs" methods which return Struct::Dumb records, providing read-only accessors only for the expected column names. Note that a column name that is not a valid identifier is trickier to access in this manner. my $row = $results->struct; my $col_name = 'foo.bar'; my $val = $row->$col_name; # or my $val = $row->${\'foo.bar'}; You can apply the role to a results object using "with_roles" in Mojo::Base, or apply it to all results objects created by a database manager using Mojo::DB::Role::ResultsRoles as shown in the synopsis. METHODS Mojo::DB::Results::Role::Struct composes the following methods. struct my $struct = $results->struct; Fetch next row from the statement handle with the result object's array method, and return it as a struct. structs my $collection = $results->structs; Fetch all rows from the statement handle with the result object's arrays method, and return them as a Mojo::Collection object containing structs. BUGS Report any issues on the public bugtracker. AUTHOR Dan Book COPYRIGHT AND LICENSE This software is Copyright (c) 2019 by Dan Book. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible) SEE ALSO Mojo::DB::Role::ResultsRoles, Mojo::Pg, Mojo::SQLite, Mojo::mysql