タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

DBIxに関するakatakunのブックマーク (8)

  • DBIx::Class::Relationship

    mst: Matt S Trout (project founder - original idea, architecture and implementation) castaway: Jess Robinson (lions share of the reference documentation and manuals) abraxxa: Alexander Hartmaier acca: Alexander Kuznetsov acme: Leon Brocard aherzog: Adam Herzog Alexander Keusch alexrj: Alessandro Ranellucci alnewkirk: Al Newkirk Altreus: Alastair McGowan-Douglas amiri: Amiri Barksdale amoore: Andre

    DBIx::Class::Relationship
    akatakun
    akatakun 2015/06/12
    カラムを一意に指定できない場合はforeignとselfを使う。
  • n+1問題を体験しました - p_chinのおっぱいブログ

    ORM使ってて、便利で余裕キメてたらn+1問題を起こしてた。 n+1問題とは 1回目 のselectで、あるテーブルのレコードの集合を取ってきて、更にまた別のテーブルから先ほど取得したレコードデータ使用して n回 selectクエリを発行してしまう現象だ。 うまく説明出来ないので下の具体例書いてみた 解決策(今回の事案の場合) JOIN使ってクエリを一回にまとめる WHERE IN使ってクエリを2回にまとめる のどちらかの対処でクエリ減らす努力をするべきだった。 具体的にどうやってしまったか friendテーブルからplayerのフレンドのレコードの集合を1回引っ張ってきて、そのレコードからまたplayerテーブルへ、フレンドのplayerデータをn回取りに行っている。 sub _get_friends_info { # 自分のフレンド関係データ(player, target)のレコードの

    n+1問題を体験しました - p_chinのおっぱいブログ
  • DBIx::Class::Manual::Cookbook - レシピいろいろ - perldoc.jp

    When you expect a large number of results, you can ask DBIx::Class for a paged resultset, which will fetch only a defined 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, # number of results per page }, ); return $rs->all(); # all recor

  • DBIx::Class::Manual::Joining

    NAME DBIx::Class::Manual::Joining - Manual on joining tables with DBIx::Class DESCRIPTION This document should help you to use DBIx::Class if you are trying to convert your normal SQL queries into DBIx::Class based queries, if you use joins extensively (and also probably if you don't). WHAT ARE JOINS If you ended up here and you don't actually know what joins are yet, then you should likely try th

    DBIx::Class::Manual::Joining
    akatakun
    akatakun 2015/05/19
    デフォルトのテーブルエイリアスは"me"やリレーション名、同じリレーション名の場合は番号が振られる。
  • DBIC で+select と+as : ああ、今頃気づくなんて... | ブログが続かないわけ

    DBIC でデータをSELECT するときに日付型のデータを好きなフォーマットで取得するのに苦労していました。 単純にSQLでto_date関数などを発行すればいいのですが、そのためにはDBICでselect, as を使わなければなりません。 それがすごく面倒なんですよ。 日付のフォーマットさえ気にしなければ、こうやってデータを取れます。$c->model('DBIC::TranDiary')->search($query_ref);ところが、フォーマットをto_date で整えるためには、こーんな風に書かなければなりません。$c->model('DBIC::TranDiary')->search( $query_ref, { select => [ 'me.diary_id', 'me.user_id', 'me.title', 'me.body', 'me.status', 'me.

    DBIC で+select と+as : ああ、今頃気づくなんて... | ブログが続かないわけ
  • 第3回 DBIx::Classでデータベース操作(2) | gihyo.jp

    Schema::Loaderの利用 第3回(1)でResultクラスには各テーブルがどのようなカラムを持っているかを定義する必要があると書きましたが、「⁠そのようなテーブル情報はデータベースから自動的に取得できるのでは?」と思った方もいるかもしれません。DBIx::Class::Schema::Loaderという別で配布されているモジュールを使用すると、Resultクラスでのテーブル情報の定義を省略できます。 Schema::Loaderを使うべきか 軽いデータベース操作であればSchema::Loaderがお手軽ですが、そうではない場合はResultクラスにテーブル定義をしっかりと書くのがお勧めです。Resultクラスにテーブル定義を書くべき理由は主に2つあります。 ●DBIx::Classからデータベースを作成できる Resultクラスにテーブル定義を書くと、DBIx::Classから

    第3回 DBIx::Classでデータベース操作(2) | gihyo.jp
    akatakun
    akatakun 2015/05/12
    トランザクションを貼る3つの方法
  • DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix

    こんにちは、最近 PSP1000 の電池が一瞬で切れてしまってまともにゲームができない xaicron です。 さて、みなさんは DBI から吐かれた SQL をみたいなーと思うこともあるでしょう。 そんな時は、$ENV{DBI_TRACE} = 2 とかしてみると、ドバーッといっぱいデバッグログが出てきて、 その中に実際に発行された SQL がちょろっと出てたりするのでこいつを頑張ってパースすればいい感じですね! っていうのはだいぶ面倒だったりしますね。あたりまえですね。 そこで、use するだけでとりあえず全部の発行された SQL を STDERR にはいてくれるモジュールを書きました。 その名も DBIx::QueryLog です。そのままですね。 つかいかた 使い方は至極簡単で、どっかで適当に use するだけです。ほかには何もいりません。 そうすると、以下のような感じで STDE

    DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix
  • perlのDBIモジュールを調べてみた。 - (゚∀゚)o彡 sasata299's blog

    2009年01月16日00:56 Perl perlDBIモジュールを調べてみた。 「perlDB接続ってどうやってるんだろう?」っていうのが気になって、DBI.pm を読んでみました。 ※そもそも、DBI.pm はインタフェースで、実際のDBとのやり取りは DBD::***.pm が行っています。 まずはDBI::connectメソッドかな〜ということで、パラパラと読み進めていくと、それっぽいところが。 unless ($dbh = $drh->$connect_meth($dsn, $user, $pass, $attr)) { $user = '' if !defined $user; $dsn = '' if !defined $dsn; my $errstr = $DBI::errstr; $errstr = '(no error string)' if !defined $

    perlのDBIモジュールを調べてみた。 - (゚∀゚)o彡 sasata299's blog
  • 1