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);