タグ

DBICに関するp33sakuraのブックマーク (10)

  • DBIC で範囲指定

    2007-01-19 期間指定で、データを抽出したい時、当初 my $articles = $schema->resultset('Article')->search( { created_on => { '>' => "2006/01/01 00:00:00", }, created_on => { '<=' => "2006/01/05 23:59:59" }, }); でいけるかと思ったんだけど、ダメ。最後のものしか有効にならない。そりゃそうか。 my $articles = $schema->resultset('Article')->search( { created_on => { '>' => "2006/01/01 00:00:00", '<=' => "2006/01/05 23:59:59" }, }); とするか、もしくは my $articles = $schema

  • DBIC で検索結果のレコードをハッシュで受け取る方法 - Craftworks Tech Blog - Branch

    なぜか、perldoc DBIx::Class::ResultSet に get_column() は載ってるのに、get_columns() が載っていなかったのでメモです。 $col1 = $rs->get_column('column1'); とかじゃなくて、 { 'column1' => 'value1', 'column2' => 'value2', 'column3' => 'value3', . . . }みたいに一気に取りたい時は、 my $rs = $schema->resultset('Table')->find($id); $row = +{ $rs->get_columns }; で行けます。search() で取った複数レコードの場合とかは、 my @rows = map +{ $_->get_columns }, $rs->all; で。 as_fdat() で

    DBIC で検索結果のレコードをハッシュで受け取る方法 - Craftworks Tech Blog - Branch
  • DBIx::Classの覚書 - Ktat's Wiki

    [カテゴリ:Perl] お手軽にShcemaを作る 作られるSQLを見たい ◯◯でなければ作成 見付からなければ作成 更新でなければ作成 find_or_new is null / is not null transaction update_or_create で id => "" を渡すと? countとgroup_by お手軽にShcemaを作るuse DBIx::Class::Schema::Loader DBIx::Class::Schema::Loader::make_schema_at ( "DB::Schema", {debug => 1, relationships => 1}, ["dbi:mysql:dbname"] ); 作られるSQLを見たい$ENV{DBIC_TRACE} = 1; とすれば、STDERRに出力される。 $ENV{DBIX_CLASS_STORA

  • DBIx::Class::Manual::Cookbook - 様々なレシピ

    検索 検索結果のページ分け 問い合わせに対して大量の結果が返されることが予想される時は、DBIx::Classに対して結果セットをページ分け(一度に少しずつ取得)するよう要求することができます: my $rs = $schema->resultset('Artist')->search( undef, { page => 1, # 取得したいページ番号(デフォルトは1) rows => 10, # ページ毎の件数 }, ); return $rs->all(); # 1ページ目を全て取得する page属性は、検索において必ずしも指定する必要はありません: my $rs = $schema->resultset('Artist')->search( undef, { rows => 10, } ); return $rs->page(1); # 最初の10レコードを含むDBIx::Class

  • DBIx::Class::Manual::Cookbook - レシピいろいろ - perldoc.jp

    名前¶ DBIx::Class::Manual::Cookbook - レシピいろいろ レシピ¶ 検索¶ ページ処理された結果セット¶ When you expect a large number of results, you can ask DBIx::Class for a paged resultset, which will fetch only a small number of records at a time: 結果セットが膨大になりそうなら、ページ処理された結果をDBIx::Classで取得できます。 一回に、少しのレコードしかとってきません: my $rs = $schema->resultset('Artist')->search( undef, { page => 1, # page to return (defaults to 1) rows => 10, #

  • DBIx::Class::Cursor::Cachedつかってみた - unknownplace.org

    すばらしすぎる。もっと早く使えばよかったとおもった。 Catalyst::Model::DBIC::Schema で使う場合はこんな感じでOK。 sub new { my $self = shift->NEXT::new(@_); my $cache = Cache::FastMmap->new( share_file => $self->{cache_file} ); $self->schema->default_resultset_attributes({ cache_object => $cache, }); $self; } そんで、あとはsearchのattrとして { cache_for => 300 } とかかいてやればそのクエリは300秒キャッシュされる。 実際にはsearch時ではなくてallとかnextのときにそのクエリをキャッシュしてる。 ちなみにdefault_re

  • DBIx::Class::Manual::FAQ - よくある質問(想定問答)

    名前 説明 よくある質問 始めたばかり リレーションシップ 検索 データの取得 データの挿入や更新 その他もろもろ CDBIユーザ向けの覚書 原文へのリンク 翻訳者 名前 DBIx::Class::Manual::FAQ - よくある質問(想定問答) 説明 このドキュメントは、ドキュメントに対する逆マップのつもりで書かれています。あなたが何をしたいのか分かっており、しかしDBIx::Classを読んでもどのようにすべきかが分からないという場合は、ここを読んでください。ここにはコードやサンプルはほとんどなく、単に説明や適切なドキュメンテーションへのポインタのみを提供します。 ~にはどうすればよいでしょうか: 始めたばかり データベースを作成する~ まず、データベースを選択します。テスト又は体験目的であるならば、私たちはDBD::SQLiteをお勧めします。これは、小規模のデータベースを含んで

  • Perl/DBIC - Nekokak's core dump

    VERSION-0.05000での記述。http://search.cpan.org/~mstrout/DBIx-Class/ ドキュメントも当初に比べれば増えてきたし、そっち見たほうがよかばい。 まあ以下は簡単なまとめで。一通り使えるくらいは書きたい。 このサイトはWikiなので途中途中に色々追加したり修正したりしますからご注意を DBIx::Class::Schemaを使ってみる これからDBICではSchemaメインらしい。 使うテーブル作成SQL create table user ( id int(10) NOT NULL auto_increment, name varchar(256) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB;

  • 第3回 DBIx::Classでデータベース操作(3) | gihyo.jp

    Resultクラスの拡張 Resultクラス、ResultSetクラスは自分の好みに合わせて拡張できます。 カラムのinflate/deflate $tweet->created_dateのようなつぶやきの日付を取りたい場合、カラムの値そのままではなくDateTimeオブジェクトを返してくれたらうれしいと思います。その機能を実現するのがカラムのinflate/deflate機能です。inflate(膨らませる)は文字どおりカラムのデータをPerlオブジェクトに変換する機能で、deflate(収縮させる)はPerlオブジェクトをカラムデータへ変換する機能です。 Resultクラス内で __PACKAGE__->inflate_column('column_name', { inflate => sub { # カラムデータからオブジェクトを作って返す }, deflate => sub {

    第3回 DBIx::Classでデータベース操作(3) | gihyo.jp
  • DBIx::Class::Relationship - テーブル間のリレーションシップ

    名前 概要 詳細 メソッド belongs_to has_many might_have has_one many_to_many 著者 ライセンス 原文へのリンク 翻訳者 名前 DBIx::Class::Relationship - テーブル間のリレーションシップ 概要 MyDB::Schema::Actor->has_many('actorroles' => 'MyDB::Schema::ActorRole', 'actor'); MyDB::Schema::Role->has_many('actorroles' => 'MyDB::Schema::ActorRole', 'role'); MyDB::Schema::ActorRole->belongs_to('role' => 'MyDB::Schema::Role'); MyDB::Schema::ActorRole->belon

  • 1