The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DBIx::Custom::Model - Model

SYNOPSIS

use DBIx::Custom::Table;

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

ATTRIBUTES

dbi

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

DBIx::Custom object.

filter

    my $dbi = $model->filter
    $model  = $model->filter({out => 'tp_to_date', in => 'date_to_tp'});

This filter is applied when DBIx::Custom's include_model() is called.

name

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

Model name.

join

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

Join clause, this is used as select()'s join option.

table

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

Table name, this is used as select() table option. Generally, this is automatically set from class name.

primary_key

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

Foreign key, this is used as primary_key of insert_at,update_at(), delete_at(),select_at().

type

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

Database data type, this is used as type optioon of insert(), insert_at(), update(), update_at(), update_all, delete(), delete_all(), select(), select_at()

view

    my $view = $model->view;
    $model   = $model->view('select id, DATE(issue_datetime) as date from book');

View. This view is registered by view() of DBIx::Custom when model is included by include_model.

METHODS

DBIx::Custom inherits all methods from Object::Simple, and you can use all methods of the object set to dbi. and implements the following new ones.

column EXPERIMETNAL

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

Create column clause. The follwoing column clause is created.

    book.author as book__author,
    book.title as book__title

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

delete

    $table->delete(...);
    

Same as delete() of DBIx::Custom except that you don't have to specify table option.

delete_all

    $table->delete_all(...);
    

Same as delete_all() of DBIx::Custom except that you don't have to specify table option.

delete_at

    $table->delete_at(...);
    

Same as delete() of DBIx::Custom except that you don't have to specify table and primary_key option.

insert

    $table->insert(...);
    

Same as insert() of DBIx::Custom except that you don't have to specify table option.

insert

    $table->insert_at(...);
    

Same as insert_at() of DBIx::Custom except that you don't have to specify table and primary_key option.

method

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

Register method. These method 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 $table = DBIx::Custom::Table->new;

Create a DBIx::Custom::Table object.

select

    $table->select(...);
    

Same as select() of DBIx::Custom except that you don't have to specify table option.

select_at

    $table->select_at(...);
    

Same as select_at() of DBIx::Custom except that you don't have to specify table and primary_key option.

update

    $table->update(...);
    

Same as update() of DBIx::Custom except that you don't have to specify table option.

update_all

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

Same as update_all() of DBIx::Custom except that you don't have to specify table name.

update_at

    $table->update_at(...);
    

Same as update_at() of DBIx::Custom except that you don't have to specify table and primary_key option.