20-2 オブジェクト

366ページ

オブジェクトの生成

use MT::Entry;
my $entry = MT::Entry->new;

オブジェクトへのデータ設定

$entry->title( 'Hello!!' );
$entry->text( 'This is body' );

367ページ

オブジェクトからのデータ取得

my $id = $entry->id;
my $title = $entry->title;
my $text = $entry->text;

オブジェクトの保存

$entry->save()
    or die "Saving Entry failed: ", $entry->errstr;

オブジェクトの取得(loadによる取得)

my $entry_id = '1';
my $entry = MT::Entry->load( $entry_id );
my ( $terms, $args );
$terms->{ status } = MT::Entry::RELEASE();
$args->{ direction } = 'descend';
my @entries = MT::Entry->load( $terms, $args );
my @list;
for my $entry (@entries) {
    push(@list, $entry->title);
}

オブジェクトの取得(load_iterによる取得)

my ( $terms, $args );
$terms->{ status } = MT::Entry::RELEASE();
$args->{ direction } = 'descend';
my $iter = MT::Entry->load_iter( $terms, $args );
my @list;
while (my $entry = $iter->()) {
    push(@list, $entry->title);
}

status

$terms->{ status } = MT::Entry::RELEASE();

368ページ

blog_id

$terms->{ blog_id } = $blog->id;

author_id

$terms->{ author_id } = $author->id;

sort

$args->{ sort } = 'authored_on';

direction

$args->{ direction } = 'descend';

limit

$args->{ limit } = 10;

offset

$args->{ limit } = 10;
$args->{ offset } = 3;

start_val

$args->{ sort } = 'modified_on';
$args->{ start_val } = '20100317000000';

369ページ

range

$terms->{ created_on } = [ '20100317000000', '20100616000000' ];
$args->{ range } = { created_on => 1 };

join

MT::Foo->join_on( joinフィールド, $terms, $args);
my ( $join_terms, $join_args );
$join_terms->{ blog_id } = $blog->id;
$join_args->{ sort } = 'created_on';
$join_args->{ direction } = 'descend';
$join_args->{ unique } = 1;
$join_args->{ limit } = 3;
$terms->{ status } = MT::Entry::RELEASE();
$args->{ join } = MT::Comment->join_on( 'entry_id', $join_terms, $join_args );
my $iter = MT::Entry->load_iter( $terms, $args );
my ( $join_terms, $join_args );
$join_terms->{ category_id } = $category->id;
$join_args->{ unique } = 1;
$terms->{ status } = MT::Entry::RELEASE();
$args->{ join } = MT::Placement->join_on( 'entry_id', $join_terms );
$args->{ sort } = 'modified_on';
$args->{ direction } = 'descend';
my $iter = MT::Entry->load_iter( $terms, $args );
my ( $join_terms, $join_args );
$join_terms->{ blog_id } = $blog->id;
$join_terms->{ status } = MT::Entry::RELEASE();
$join_args->{ unique } = 1;
$args->{ join } = MT::Entry->join_on( 'author_id', $join_terms, $join_args );
my $iter = MT::Author->load_iter( undef, $args );

370ページ

my ( $join_terms, $join_args );
$join_terms->{ blog_id } = $blog->id;
$join_terms->{ author_id } = $author->id;
$join_args->{ unique } = 1;
$args->{ join } = MT::Association->join_on( 'role_id', $join_terms, $join_args );
my $iter = MT::Role->load_iter( undef, $args );

オブジェクトのカウント

my $count = MT::Entry->count( $terms, $args );

オブジェクトの削除

$entry->remove
    or die "Removing entry failed: ", $entry->errstr;

オブジェクトの一括削除

$entry->remove_all
or die "Removing entry failed: ", $entry->errstr;
my @entries = MT::Entry->load({ foo => 'bar' });
for my $entry (@entries) {
    $entry->remove;
}
my $iter = MT::Entry->load_iter({ foo => 'bar' });
my @to_remove;
while (my $entry = $iter->()) {
    push(@entries, $entry) if SOME CONDITION;
}
for my $entry (@entries) {
    $entry->remove;
}

関連するオブジェクトの削除

$entry->remove_children({ key => 'entry_id' });

371ページ

sub remove {
    my $obj = shift;
    $obj->remove_children({ key => 'object_id' });
    $obj->SUPER::remove(@_);
}
#!/usr/bin/perl
 
use strict;
use warnings;
 
use lib './lib';
use lib './extlib';
 
use CGI;
use MT;
use MT::Entry;
 
my $cgi = new CGI;
print $cgi->header(-charset=>'UTF-8'),
      $cgi->start_html(-lang=>'ja', -encoding=>'UTF-8', -title=>'test');
 
my $terms;
my $args;
 
$terms->{ status } = MT::Entry::RELEASE();
$args->{ direction } = 'decend';
$args->{ limit } = 10;
my $iter = MT::Entry->load_iter( $terms, $args );
while (my $entry = $iter->()) {
    print $entry->title.'<br />';
}

データベースへのアクセス

$blog_id = 1;
$config = '/path/to/mt-config.cgi';
$mt = MT::get_instance($blog_id, $config);
$db = $mt->db();

372ページ

$mt = MT::get_instance($blog_id, $config);
$db = $mt->db();

オブジェクトへのアクセス

$args['limit'] = 10;
$args['sort_by'] = 'title';
$args['sort_order'] = 'ascend';
$db->fetch_entries($args);
foreach ($e as $entries) {
    $title = $e->title;
}
$args['limit'] = 10;
$args['sort_by'] = 'title';
$args['sort_order'] = 'ascend';
$db->fetch_entries($args);

このアーカイブについて

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。