この日記のはてなブックマーク数 Subscribe with livedoor Reader

2007-03-27 Tue


DBIC で columns [DBIC]


O/R マッパーということで、基本的には、全部のカラムをひっぱってくるわけですが、ちょっと idとタイトルの一覧を表示するだけだから、全部ひっぱり出すのは、ちょっと勿体ないよねぇ…ってときは

my $articles = $schema->resultset('Article')->search(
    undef,
        { columns => [qw/ id title /] }
);


のようにすれば、カラムを指定してデータを取ってこれます。

ただし、

__PACKAGE__->many_to_many(
    'tags' => 'tagmap',
    'tag_id'
);


とか、リレーションを設定しているものにたいしては、うまく動きません。実際にやってみると

my $articles = $schema->resultset('Article')->search(
    undef,
    { columns => [qw/ id tags /] }

);




DBD::mysql::st execute failed: Unknown column 'me.tags' in 'field list' at /usr/share/perl5/DBIx/Class/Storage/DBI.pm line 782.
DBIx::Class::ResultSet::next(): Error executing 'SELECT me.id, me.tags FROM article me': Unknown column 'me.tags' in 'field list' at select.pl line 19


のようなメッセージを吐いて失敗します。忘れそうなので、メモ。というか普通になんか方法ありそうだけどねぇ(^_^;



IPv4/IPv6 meter
検索キーワードは複数指定できます
ChangeLogを検索
Google
Web www.kunitake.org
思ったより安い……時もある、Amazon

カテゴリ