元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

MT::Object

Ruby on Rails 4.2 のActiveRecordでMovable TypeのデータをQueryInterfaceとかArelとかで扱ってみた

この記事はMovable Type Advent Calendar 2015 - Adventar20日目の記事のはずでした。忘れてました。ごめんなさい。 ふと思い立って現段階の最新のRailsでMTのデータを扱う実験をしてみました。 Railsで非RailsなDBを扱うサンプルにもなるかも。 サンプルコ…

MT::Object でのトランザクション Data::ObjectDriverを直接触っちゃう編

MT::Object(というより親クラスのData::ObjectDriver::BaseObject)にはトランザクション操作用のbegin_workなどが用意されています。 MT::Object でのトランザクション(Rollback / Commit) - フリーエンジニアライフ MT::Object でのトランザクション(R…

MT::Object::remove() でトランザクションが効かない件について

バグか仕様かわかりませんが嵌まったのでメモ。 Movable Type 6 MySQL 5.1 InnoDB こんなかんじでトランザクション使えますが、remove()の場合、begin_workで立てたはずのトランザクションを使うぞ!的なフラグを無視しやがるようです。 MT::Object でのトラ…

MT::Object でのトランザクション(Rollback / Commit)

挙動が思ってたのと違ったのでメモ。 Movable Type 6 MySQL 5.1 InnoDB my $entry = MT->model( 'entry' )->load(); $entry->begin_work; # トランザクション開始…とおもいきや実はまだフラグを立てるだけ $entry->save(); # ここでトランザクション開始(au…

MT::Object で外部結合(OUTER JOIN)

MT::Objectで外部結合をする方法について。

MT::Objectでは精度仕様・桁数を指定したfloatは使えない

loat(9,6) で指定できそうでできない

MT::Object での GROUP BY 集計関数の利用方法

微妙に痒いところに手が届かないものの、MT::Object->(count|max|avg|sum)_group_byというのがひっそりとある。 使い方は共通してこんなかんじ。hogeのところは便宜読み替えのこと。 my $group_iter = MT::Foo->hoge_group_by( $terms, { %args, group => […

MTのデータベース中の文字列を一括置換するスクリプト

SQLだとこんなかんじで・・・ UPDATE mt_entry SET entry_text=REPLACE(entry_text, "http://takeyu-web.com/", "/") WHERE entry_text IS NOT NULL; カスタムフィールド(複数行テキスト)だったらこんな感じで・・・ UPDATE mt_entry_meta SET entry_meta_vclob=…

MTのデータベースで任意のSQLを実行して結果を取得する

MT::Object->driver()を使う。 my $sql = "SELECT * FROM mt_entry WHERE entry_id = ?"; my @bind_values = ( 100 ); require MT::Object; my $driver = MT::Object->driver; my $dbh = $driver->rw_handle; my $sth = $dbh->prepare( $sql ); die $dbh->er…

MTプラグインで拡張したカラムにインデックスを貼ったりデフォルト値を設定したりするには

MTプラグインを作成する際、既存のオブジェクト(記事 MT::Entry とか)に、プラグイン独自の属性を追加する場合がある。 このとき、config.yamlでこんな風にするのが基本。 object_types: entry: myid: integer 追加したカラムにインデックスを貼ったり、デ…

MT::Object->search_by_meta() でカスタムフィールド以外での検索条件を追加する

MovableTypeでサイトを構築していると、カスタムフィールドを使ってあれやこれや結構ややこしいことをしたくなります。(JOINまみれになるのであんまりよくないのですが・・・) その場合、プラグインを作ったりするのですが、カスタムフィールドで検索するのに…