DBICで論理削除をしたくなったので調べていたのだが、うまく書く方法がイマイチなかった。 まず、削除フラグを常にチェックするようにするのは簡単で、テーブルクラスに __PACKAGE__->resultset_attributes({ where => { deleted => undef }}); とか書いてくだけでつねにWHERE句に deleted IS NOT NULL が入るようになる。これはマニュアルに書いてある通り。 問題は削除するときで、テーブルクラスで delete 定義してそこで update({ deleted => 1 }) とかやればいいかなと思いきや、そうすると cascade delete 効かなくなってしまっていやだ。 DBICのrowに対するdeleteチェーンは大まかに ユーザー定義テーブルクラスでのdelete (定義されてる場合)DBIx::Clas
NAME DBIx::Class::Cursor::Cached - cursor class with built-in caching support SYNOPSIS my $schema = SchemaClass->connect( $dsn, $user, $pass, { cursor_class => 'DBIx::Class::Cursor::Cached' } ); $schema->default_resultset_attributes({ cache_object => Cache::FileCache->new({ namespace => 'SchemaClass' }), }); my $rs = $schema->resultset('CD')->search(undef, { cache_for => 300 }); my @cds = $rs->all
livedoor Readerサービス終了のお知らせ 2014年12月をもちまして、LINE株式会社が提供するlivedoor Readerの運営を終了しております。 長きに渡りご愛顧をいただきまして、誠にありがとうございました。 livedoorホームへ戻る
前にhttp://d.hatena.ne.jp/nekokak/20070824/1187941930ってのをかきましたが それをモジュール化してみた http://coderepos.org/share/browser/lang/perl/DBIx-Class-ProxyTable とりあえずMySQLとSQLiteでつかえる(はずです 使い方 package Your::Schema; use base 'DBIx::Class::Schema'; __PACKAGE__->load_classes(qw//); package Your::Schema::Log; use base 'DBIx::Class'; __PACKAGE__->load_components(qw/ProxyTable Core/); __PACKAGE__->table('log'); __PACKAGE
http://blog.mizzy.org/articles/2007/05/06/dbix-class-schema-loader unknownplace.org - 2007/05/07 - Schema::Loader 使い方 更に、自分の場合は myapp.yml に C::M::DBIC::Schema の設定が書いてあるので use DBIx::Class::Schema::Loader qw(make_schema_at); use File::Spec; use FindBin qw($Bin); use MyApp; my $config = MyApp->config->{'Model::DBIC'}; make_schema_at( $config->{schema_class}, { debug => 1, dump_directory => File::Spec
舌足らずすぎた。 Model::DBIC: connect_info: - dbi:mysql:table - root - on_connect_do: - SET NAMES utf8 cursor_class: DBIx::Class::Cursor::Cached cache_file: __path_to(tmp/query_cache)__ さっきはこんなconfigで使った場合のコードです。 すばらしすぎる。もっと早く使えばよかったとおもった。 Catalyst::Model::DBIC::Schema で使う場合はこんな感じでOK。 sub new { my $self = shift->NEXT::new(@_); my $cache = Cache::FastMmap->new( share_file => $self->{cache_file} ); $self->s
If you want a somewhat pretty picture of your DBIC schema (with relationships drawn, of course), install GraphViz, SQL::Translator, and DBICx::Deploy from the CPAN, and then run: $ dbicdeploy -Ilib MyApp::Schema ~/graphs GraphViz ~/graphs will then contain a .sql file that is actually a png of your schema. Rename it and see your schema in your favorite png viewing application. Oh yeah, the post ne
DBICでバックエンドとの接続が切れた時などに再接続する際の挙動が、0.07x と 0.08x で異なるようなのでメモ。確認したのは PostgreSQL の場合です。 動作確認スクリプトは末尾に。動作は以下の流れ。 connect() resultset から find() バックエンドをkill resultset から find() 0.07006 の場合。 $ perl -IDBIx-Class-0.07006/blib/lib/ dbic.pl DBIx::Class->VERSION: 0.07006 get ok 19115 killing 19115 FATAL: terminating connection due to administrator command get ok正常に再接続可能。 0.08007 の場合。 $ perl -IDBIx-Class-0.080
NAME POE::Component::MDBA::Backend::DBIC - DBIx::Class Backend SYNOPSIS use POE qw(Component::MDBA); POE::Component::MDBA->spawn( alias => $alias, backend => 'DBIC', backend_args => [ { schema => $schema1 }, { schema => $schema2 } ] ); # else where in your code... POE::Kernel->post($alias, 'execute', { args => [ ... list method arguments ... ] }); DESCRIPTION This module allows you simple access t
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
NAME DBIx::Class::QueryLog - Log queries for later analysis. VERSION version 1.005001 SYNOPSIS DBIx::Class::QueryLog 'logs' each transaction and query executed so you can analyze what happened in the 'session'. It must be installed as the debugobj in DBIx::Class: use DBIx::Class::QueryLog::NotifyOnMax; use DBIx::Class::QueryLog::Analyzer; my $schema = ... # Get your schema! my $ql = DBIx::Class::Q
よくわからない表題ですが要は・・・ MyApp::Schema::TopicsとMyApp::Schema::Commentsが1:nの関係にあるとして package MyApp::Schema::Topics; use strict; __PACKAGE__->has_many('comments' => 'MyApp::Schema::Comments'); 1; こんなアクションで sub list : Local { my ( $self, $c ) = @_; my $topics = $c->model('Topics')->search({}); $c->stash->{topics} = $topics; $c->stash->{template} = 'list.tt'; } TTで素でやる場合 <html> <body> <ul> [% WHILE (topic =
For those of you who're interested in me demonstrating just how badly I interview, you can hear a perlcast podcast interview with me about DBIx::Class which was recorded last month.Better still, after 7 dev releases, four of them RC grade, a lot of bug fixing, a lot of hating databases, and sterling work from many many people, I'm proud to announce that DBIx::Class 0.08000 is on its way to being a
以前、DBIx::Class::DigestColumnsの問題というエントリーでDBIC::DigestColumnsがいまいち使いづらいようなことを書きましたが、今年に入ってアップデートされてちょっと便利になった模様。 ユーザー管理で生パスワードを保存したくない場合には結構便利なコンポーネントです。 テーブルを作って create table users ( id integer not null primary key, username text not null, password text not null ); schemaクラスはLoaderにまかせて package MyApp; use strict; use base qw/DBIx::Class::Schema::Loader/; __PACKAGE__->loader_options( components =>
Months ago I implemented DBIx::Class::Storage::Statistics with the intent of making some sort of profiling tool. I finally got off my ass and did it. DBIx::Class::QueryLog should be on CPAN this weekend. At $work we are replacing a legacy system with one based on Catalyst. One of the deliverables for this year is a new order entry application. Since our customer service folks are used to working i
とかいうのがDBICのCoreに入りました。 使い方は簡単?で use DBIx::Class::ResultClass::HashRefInflator; my $rs = $self->model('Blog'); $rs->result_class('DBIx::Class::ResultClass::HashRefInflator'); my $member = $rs->single({rid => 'HXOK7cI4DA'}); warn Dumper $member; こんな感じでresult_classに設定してやると 結果として $VAR1 = { 'timestamp' => '2007-01-18 17:03:06', 'member_id' => '15', 'created_on' => '2007-01-18 17:03:06', 'id' => '34', '
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く