DBICでのアップデート

まあ、普通。こんな感じかと。


my $member = $self->model('Member')->search({email => 'nekokak@hogehoge.hoge'})->first;
$member->update({name => 'nekokak'});

実行されるSQL


Executing :
SELECT me.name, me.rid, me.id
FROM member me
WHERE ( email = ? )
ORDER BY me.id DESC :
'nekokak@hogehoge.hoge'
-->Query Time: 0.001723.
-->ALL Query Time: 0.001723

                                                                • -

Executing :
UPDATE member SET name = ?
WHERE ( id = ? ) :
'nekokak', '7'
-->Query Time: 0.001597.
-->ALL Query Time: 0.00332

                                                                  • -

メソッドチェーンばりばりなアップデートの方法。(ってほどでもないですが。


$self->model('Member')->search({email => 'nekokak@hogehoge.hoge'})->update({name => 'nekokak'});

実行されるSQL


Executing :
UPDATE member SET name = ?
WHERE ( email = ? ) :
'nekokak', 'nekokak@hogehoge.hoge'
-->Query Time: 0.002275.
-->ALL Query Time: 0.002275

                                                                          • -

あらべんりー。
まあ、firstしたときと微妙に挙動が違うますが。
(プライマリーキー指定してないのでマルチラインのupdateされる可能性もありますが)


間にfirst入れることももちろんおk


$self->model('Member')->search({email => 'nekokak@hogehoge.hoge'})->first->update({name => 'nekokak'});

ちなみにpopulateメソッドつかったらマルチラインインサートしてくれるかなともちょっと思ったけど
やっぱダメだね。1行1行インサートしてるわ。
まあ、色々フックかけてデータをもにゅもにゅ暗号化したりしてるからしかたないんだけどもね。
もし、本気のマルチラインインサートしたければDBI直でやるよろし。

Wii欲しい!

動画貼るの忘れてた。