タグ

dbicに関するkamawadaのブックマーク (59)

  • YAPC::Asia 2009 特別研修 - Moose 入門

    先週末の YAPC::Asia 2009 のカンファレンスに引き続き、特別研修『Moose入門、モダーンなオブジェクト指向システム』に参加してきた。 研修の内容は、Moose とはなんぞやから始まり、以下(だいたい)7 部構成の入門講座。 Moose Concepts : コンセプト ざっと機能一通りみてみる なぜ Moose なのか Classes : Class の基礎から使い方 Moose::Object が何持ってるかとか BUIDLARGS, extends, override, super の使い方 Moose 使ったあとの後始末 (no Moose;) Role : Role の基礎から使いかた Role の持つ意味 使い方 alias で衝突回避 Basic Attributes : Attribute いろいろ required, default/builder, laz

  • namespaceを使ったDBIx::Classのスキーマ構成 - hide-k.net#blog

    良くあるDBICのサンプルではDBIx::Class::Schema::load_classes()を使ってクラスのロードを行っています。 CD.pm package CD; use strict; use warnings; use base 'DBIx::Class::Schema'; __PACKAGE__->load_classes; 1; load_classes()はクラスを指定しないと CD Album Track という構成において自動的にクラスをロードすることができます。 ここでResultSetの拡張をしたいと考えます。例えば CD/ResultSet/Album.pm package CD::ResultSet::Album; use strict; use warnings; use base 'DBIx::Class::ResultSet'; sub search

  • DBIx::Class - Japan Perl Association Wiki

    トレース DBIx::Classで複雑なクエリを行っている場合、実際に発行されているクエリをみる必要がある場合があります。そのような場合は環境変数DBIC_TRACEを設定してスクリプトを実行すると実行されているクエリをみることができます: DBIC_TRACE=1 myscript.pl クエリが多くて一度に追うのが難しい場合はこの出力をファイルに向けることもできます。 DBIC_TRACE=1=/path/to/query.log myscript.pl トランザクション DBIx::Class 0.08100以上をお使いであれば、明示的に何も指定しなくてもDBIx::Class::Storage::TxnScopeGuardを使用することができます。 #!/usr/bin/perl use strict; use MyApp::Schema; my $schema = MyApp::

  • lib/Pixis/Trait/WithDBIC.pm at master from lestrrat's pixis - GitHub

  • lib/Pixis/API/WithDBIC.pm at master from lestrrat's pixis - GitHub

  • DBICで本当に困ったら SCALAR REFERNCE を使え - daily dayflower

    追記 2006/12/06 下記で IS NOT NULL を実現するのにスカラーリファレンスを使用していますが,IS NULL / IS NOT NULL を出すためには必ずしもスカラーリファレンスを利用する必要はありません。ということで訂正を入れようと思ったんですがちょっと長いので「フォローアップ記事」を書きました。 題 typester さんに以前教えて頂いたんですが,似たようなことに今日遭遇したのでメモ。 WHERE field1 IS NOT NULL な検索をしようと思って, $resultset->search({ field1 => 'IS NOT NULL' });と書くと,内部的には SELECT ... WHERE field1 = ?と展開されて,プレースホルダに「IS NOT NULL」が渡されるので,バツ。 $resultset->search({ field

    DBICで本当に困ったら SCALAR REFERNCE を使え - daily dayflower
  • DBDでUTF8 flaggedな文字列を返す - hide-k.net#blog

    \mysql_enable_utf8 => 1 で DBIC::UTF8Columns 要らなくなるっぽい - 僕ト云フ事@はてな出張版 恥ずかしながら知りませんでした。 DBIx::Classの場合、DBIx::Class::UTF8Columnsを使ってutf8_columns()でUTF8フラグを立てたいカラムを指定するのですが、特定のカラムだけにUTF8フラグを立てるというのは稀で、全ての文字列のカラムに立てるのが多くの場合だと思います。 ので、DBDのレイヤーで吸収するこの方法が個人的にもベストプラクティスだと思います。 vkgtaro++ 備忘でまとめておくと各DBDの接続オプションで mysql: mysql_enable_utf8 postgresql: pg_enable_utf8 sqlite: unicode に1を指定することにより、全ての文字列のカラムの値にUTF

  • mysql_enable_utf8 => 1 で DBIC::UTF8Columns 要らなくなるっぽい - 僕ト云フ事@はてな出張版

    追記です コメントとブクマで今のところ experimental と書いてあるよ! と教えてもらいました。気づいてなかったです。id:nihen さん、コメントくれた人、ありがとう。 This option is experimental and may change in future versions. Catalyst::Wiki もこれ書いた方が良さそうですね。書けるのかな。 それにしても、DBD 側でできると良いに越したことないので、早く確定して欲しいですね! 追記2 あー、でもこれ、4.00からずっとこのままだ。かれこれ2年くらい experimental なんですがw Catalyst::Wiki に書いて来ちゃったけどw ここから元の内容 lyokato さん経由で woremacx さんに教えてもらった Using Unicode - Catalyst::Wiki に書い

    mysql_enable_utf8 => 1 で DBIC::UTF8Columns 要らなくなるっぽい - 僕ト云フ事@はてな出張版
  • Sub::AutoでDBICにfindByほげほげを生やしてみた - Lism.in * blog - nekoya (id:studio-m)

    Sub::AutoでAUTOLOADを隠蔽 - dann@webdev - dann's portal が面白そうだったのでDBIC::ResultSetにfindBy〜を生やしてみた。 perldoc見ても$selfがどこに入ってくるのか分からんかったけど、@_に関数名のマッチが入って、その次に来るみたい。 #!/usr/bin/perl use strict; use warnings; package DBIx::Class::ResultSet; use Sub::Auto; autosub /^findBy(\w+)$/ { my ( $method, $self, $value ) = @_; $method = lc $method; return undef unless grep /^$method$/, $self->result_source->columns; $s

    Sub::AutoでDBICにfindByほげほげを生やしてみた - Lism.in * blog - nekoya (id:studio-m)
    kamawada
    kamawada 2008/10/14
    oooo
  • hide-k.net#blog: Kazuho式フレンド・タイムライン実装をDBICで表してみた

    Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践 奥さん人の中でブームが去った感もあるRDBMSで実現するフレンド・タイムライン処理ですが、そういえばDBICで使ってみたのを思い出したので晒してみます。 要はDBICからストアドプロシージャの叩き方を知りたかっただけなんですけどね。 パッケージ名はWebインターフェースはどーせCatalystで作るでしょってことでCatalyst + Twitter = Catatter…って安直なネーミングですね。 記事中ではプッシュ型とプル型が紹介されているのですが、データ量やfollow, removeの際のコストとか考えたらプル型の方が好みかなってことでプル型を採用してみました。 また、基的にスキーマやストアドプロシージャはオリジナルと同じですが、DBICでPKをマルチカラムにするとめんどっちーのでサロゲートキーを

  • はてなブログ | 無料ブログを作成しよう

    週報 2024/04/28 川はただ流れている 4/20(土) 初期値依存性 さいきん土曜日は寝てばかり。平日で何か消耗しているらしい。やったことと言えば庭いじりと読書くらい。 ベランダの大改造をした。 サンドイッチ 一年前に引っ越してからこんな配置だったのだけど、さいきん鉢を増やしたら洗濯担当大臣の氏…

    はてなブログ | 無料ブログを作成しよう
  • DBIx::Class とMemcached (ありんく tech-log)

    DBIx::Classでちょっと困った。 当然といえば当然なのだが、あるレコード結果をmemcachedなどのキャッシュに保存した場合、 belongs_toで定義したカラムが含まれ、それを参照するとエラーになる。 TTで [% article.category.name %] とかしたくても、articleとcategoryがbelongs_toの関係の場合 Memcache化(キャッシュを参照するとエラーる)できないので、もう少し調査してみる。 ※belongs_toを使わないで、別schemaのresultsetを参照できればそれでもいいんだが。

  • http://www.removabletype.net/pods/DBIx/Class/Relationship.html

  • DBIx::Classでスレーブに接続する - libnitsuji.so

    レプリケーション環境で、更新系クエリはマスター、参照系クエリはスレーブに振り分けるというのはよくあることだと思います。 PerlのO/RマッパーであるDBIx::ClassにはDBIx::Class::Storage::DBI::Replicationというのがあって、これを使うと利用側で接続先を意識することなくクエリを振り分けることができそうです。しかし、どうやら参照系は必ずスレーブへ振り分けてしまうようなので、トランザクションの中ではマスターを参照したいといった場合に対応できないんじゃないかと思いました。 そこで、明示的にスレーブの接続を取得する方法がないかなーと思ったんですが見当たらなかったので書いてみました。 実装するにあたり以下のClass::DBI用に書かれたコードを参考にしてみました。 http://d.hatena.ne.jp/tokuhirom/20060713/1152

    DBIx::Classでスレーブに接続する - libnitsuji.so
  • mizzy.org : Re: DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い

    ブログが続かないわけ | DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い にて、 とはいえ、僕の稼働中のアプリはすでに手動型のSchema で動いている。スキーマを作り直したら、リレーションの設定を全てしなおさなければならないので、それは現実的じゃない。inflate, deflate の指定は、やっぱりすべてのSchema にかかなきゃだめそうだ。 とあったので、これに関して少し楽ができる方法をコメントしようと思ったけれど、コメント欄ではうまく伝えられる自信がないので、こちらで書いてみることにしました。 load_components で 読み込む方法 DBIx::Class::Schema::Loader ではなく DBIx::Class::Schema を継承したスキーマの場合には、各スキーマファイルに以下の様に書いてあげれば OK です。(既

  • 2007/05/07 - memo - unknownplace.org

    書き忘れたけどさっきの update_schema.pl は ./script/myapp_update_schema.pl dbi:mysql:tablename username password 見たいな感じで DSN を渡す必要がある。めんどう。 ここら辺があれでまだヘルパーにはなってない。 mizzy.org : Re: DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い 僕の中で流行ってる使い方があるのでかぶせて書いておいてみる。mizzy さんの二個目の例を自分ルール化させた感じ? 作業は一般的なCatalystアプリのディレクトリ構造上であるとして、そこに新しく schema というディレクトリを作成。 そんで、 schema/lib/Schema/{TableName}.pm に各テーブルのリレーション定義とかメソッドとかを自分で書く。

  • DBIx::Class::Service Released - Yet Another Hackadelic

    まだCPANに反映されて居ないと思いますが、DBIx::Class:Serviceと言うモジュールをリリースしました。 /lang/perl/DBIx-Class-Service/trunk (CodeRepos) DBIx-Class-Service-0.02 - Aggregate DBIC processes between multiple tables. - metacpan.org どんなモジュールか 複数のテーブルにinsertしたりする処理をまとめて書く為のモジュールです。 具体的に言えば、 package MySchema::Service::User; use base qw(DBIx::Class::Service); sub add_user: Transaction { my ($class, $schema, $args) = @_; my $user_rs =

    DBIx::Class::Service Released - Yet Another Hackadelic
  • DBIC で JOIN 先の SUM したカラムで ORDER BY のこと - 日々のこと

    仕事でそんなのを実装しなくちゃいけないことになった。 普通に JOIN 先のカラムで ORDER BY なら簡単なんですけど SUM や COUNT なんかをしたカラムで ORDER BY だと少しやっかいです。 会社のソースをペコッとするわけにもいかないので、例としてブログの管理画面を考えてみます。 記事 (Nikki::Schema::Article) の一覧です。 記事の一覧は通常であれば投稿日順でソートしますが、強引にコメント(Nikki::Schema::Comment)数順でソートしてみます。あ、DBMySQL(5.0) として話を進めます。 見ずらい場合はこっちで読んでねねね。 Nikki::Schema::Article package Nikki::Schema::Article; use strict; use warnings; use base qw/

    kamawada
    kamawada 2008/03/28
    これを探してた
  • delete() - Lazy Programmer :-p

    ヤバいことしてまいました。 $c->model('DB::Foo')->delete({id=> $id }); 上記のコード、全データ消えます。orz... 知ってたのに、きづかずに書いてた。 $c->model('DB::Foo')->search({id=>$id})->delete(); これが正解。これは、最高級にヤバイ不具合を作ってしまうので、気をつけた方がいい。

    delete() - Lazy Programmer :-p
    kamawada
    kamawada 2008/03/19
    やってしまった><
  • DBIx::Class::Schema::Loaderの手動スキーマ生成、初心者向けチュートリアル - Yet Another Hackadelic

    と言う訳で自分なりに色々調べてみた。 テスト用データベース定義 CREATE TABLE `User` ( `user_id` bigint(20) NOT NULL auto_increment, `name` varchar(255) character set latin1 default NULL, `created_on` datetime default NULL, `updated_on` datetime default NULL, PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `Book` ( `book_id` bigint(20) NOT NULL auto_increment, `name` varchar(255) character set latin1 de

    DBIx::Class::Schema::Loaderの手動スキーマ生成、初心者向けチュートリアル - Yet Another Hackadelic