The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DBIx::Custom::Model - Model

SYNOPSIS

use DBIx::Custom::Model;

my $model = DBIx::Custom::Model->new(table => 'books');

ATTRIBUTES

dbi

    my $dbi = $model->dbi;
    $model = $model->dbi($dbi);

DBIx::Custom object.

created_at EXPERIMENTAL

    my $created_at = $model->created_at;
    $model = $model->created_at('created_datatime');

Create timestamp column, this is passed to insert or update method.

join

    my $join = $model->join;
    $model = $model->join(
        ['left outer join company on book.company_id = company.id']
    );
    

Join clause, this value is passed to select method.

primary_key

    my $primary_key = $model->primary_key;
    $model = $model->primary_key(['id', 'number']);

Primary key,this is passed to insert, update, delete, and select method.

table

    my $model = $model->table;
    $model = $model->table('book');

Table name, this is passed to select method.

bind_type

    my $type = $model->bind_type;
    $model = $model->bind_type(['image' => DBI::SQL_BLOB]);
    

Database data type, this is used as type optioon of insert, update, update_all, delete, delete_all, and select method

updated_at EXPERIMENTAL

    my $updated_at = $model->updated_at;
    $model = $model->updated_at('updated_datatime');

Updated timestamp column, this is passed to update method.

METHODS

DBIx::Custom::Model inherits all methods from Object::Simple, and you can use all methods of DBIx::Custom and DBI and implements the following new ones.

count

    my $count = $model->count;

Get rows count.

Options is same as select method's ones.

delete

    $model->delete(...);
    

Same as delete of DBIx::Custom except that you don't have to specify options if you set attribute in model.

delete_all

    $model->delete_all(...);
    

Same as delete_all of DBIx::Custom except that you don't have to specify options if you set attribute in model.

insert

    $model->insert(...);
    

Same as insert of DBIx::Custom except that you don't have to specify options if you set attribute in model.

helper

    $model->helper(
        update_or_insert => sub {
            my $self = shift;
            
            # ...
        },
        find_or_create   => sub {
            my $self = shift;
            
            # ...
    );

Register helper. These helper is called directly from DBIx::Custom::Model object.

    $model->update_or_insert;
    $model->find_or_create;

mycolumn

    my $column = $self->mycolumn;
    my $column = $self->mycolumn(book => ['author', 'title']);
    my $column = $self->mycolumn(['author', 'title']);

Create column clause for myself. The follwoing column clause is created.

    book.author as author,
    book.title as title

If table name is ommited, table attribute of the model is used. If column names is omitted, columns attribute of the model is used.

new

    my $model = DBIx::Custom::Model->new;

Create a DBIx::Custom::Model object.

select

    $model->select(...);
    

Same as select of DBIx::Custom except that you don't have to specify options if you set attribute in model.

update

    $model->update(...);
    

Same as update of DBIx::Custom except that you don't have to specify options if you set attribute in model.

update_all

    $model->update_all(param => \%param);
    

Same as update_all of DBIx::Custom except that you don't have to specify options if you set attribute in model.

update_or_insert EXPERIMENTAL

    $model->update_or_insert(...);
    

Same as update of DBIx::Custom except that you don't have to specify options if you set attribute in model.