
ClearPress::model - a base class for the data-model of the ClearPress MVC family

$LastChangedRevision: 338 $

use strict;
use warning;
use base qw(ClearPress::model);
__PACKAGE__->mk_accessors(__PACKAGE__->fields());
sub fields { return qw(...); }


my @aFields = $oModel->fields(); my @aFields = __PACKAGE__->fields();
my $sPrimaryKey = $oModel->fields();
my $sTableName = $oModel->table();
my $oInstance = ClearPress::model::subclass->new();
also supports creation with a hashref of key:values and creation
with a scalar primary key, e.g.
my $oInstance = ClearPress::model::subclass->new({id_subclass => 10});
my $oInstance = ClearPress::model::subclass->new(10);
my $oUtil = ClearPress::model::subclass->util(); my $oUtil = $oInstance->util();
Invokes $self->read() if necessary. my $sFieldValue = $oModel->get($sFieldName);
my $arObjects = $oModel->gen_getarray('ClearPress::model::subclass',
q(SELECT a,b,c FROM x,y WHERE x.d=? AND y.e=?),
@bind_params);
my $arObjects = $oModel->gen_getall();
my $arObjects = $oModel->gen_getall('ClearPress::otherclass');
my $oObj = $self->gen_getobj($sClass);
my $arObjects = $oModel->gen_getfriends($sClass); my $arObjects = $oModel->gen_getfriends($sClass, $sCacheKey);
my $arObjects = $oModel->gen_getfriends($sClass, $sJoinTable); my $arObjects = $oModel->gen_getfriends($sClass, $sJoinTable, $sCacheKey);
my $oRelative = $oModel->gen_getobj_through($sClass, $sJoinTable); my $oRelative = $oModel->gen_getobj_through($sClass, $sJoinTable, $sCacheKey);
__PACKAGE__->has_a('my::pkg');
__PACKAGE__->has_a(['my::pkg1', 'my::pkg2']);
__PACKAGE__->has_a({method => 'my::fieldpkg'});
__PACKAGE__->has_a([{method_one => 'my::pkg1'},
{method_two => 'my::pkg2'});
__PACKAGE__->has_many('my::pkg');
If my::pkg has a table of "package" then this creates a method "sub
packages" in $self, yielding an arrayref of my::pkg objects related
by the primary_key of $self.
__PACKAGE__->has_many(['my::pkg1', 'my::pkg2']);
Define multiple relationships together.
__PACKAGE__->has_many({method => 'my::fieldpkg'});
Defines a method "sub methods" in $self yielding an arrayref of
my::fieldpkg objects related by the primary_key of $self.
__PACKAGE__->has_many([{method_one => 'my::pkg1'},
{method_two => 'my::pkg2'});
Defines multiple relationships with overridden method names.
Define a 'users' method in this class which fetches users like so:
SELECT u.id_user, u.foo, u.bar
FROM user f, centre_user t
WHERE t.id_this = ? # the primary_key for $self's class
AND t.id_user = f.id_user # the primary_key for friend 'user'
__PACKAGE__->has_many_through(['user|centre_user']);
__PACKAGE__->has_a_through(['user|friend', 'user|enemy']);
__PACKAGE__->has_all();
$oModel->create();
$oModel->load();
$oModel->update();
$oModel->delete();
$oModel->save();
my $sZuluTime = $oModel->zdate();
my $sISODate = $oModel->isodate();
my $sJSON = $oModel->as_json();
my $oXML = $oModel->as_xml();






Roger Pettett, <rpettett@cpan.org>

Copyright (C) 2008 Roger Pettett
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.