色々なデータの更新方法1 #08B!

こんにちわ!nekokakです!

八日目はDBIx::Skinnyでのデータ更新メソッドの説明です。

create

createメソッドを使うと指定したテーブルにデータをinsertする事が出来ます。

# INSERT INTO user (name) VALUES(?);
# bind: nekokak
my $row = $db->create('user',{name => 'nekokak'});

createメソッドの返り値はinsertしたデータのrowオブジェクトとなっていますので

$row->name;

と、アクセスする事が可能です。

bulk_insert

bulk_insertを利用すると、複数のデータを一気にinsertする事ができます。

同一テーブルに対して複数レコードまとめてinsertを行いたい場合に使用してください。

$db->bulk_insert('user',
    [
        {name => 'nekokak'},
        {name => 'yappo'},
        {name => 'nekoya'},
    ]
);

createメソッドをinsertする回数分呼び出すよりも高速に動作します。

find_or_create

find_or_createメソッドを利用することで、

条件にあったレコードがDBに存在するかをチェックし、

DBにデータがなければinsertを発行して、結果をrowオブジェクトにして返す事ができます。

my $row = $db->find_or_create('user',{name => 'nekokak'});

update

updateメソッドでは既にあるレコードを更新します。

$db->update('user',{name => 'yappo'}, {id => 1});

一つ目の引数に対象となるテーブル名

二つ目の引数にupdateする内容

三つ目の引数にupdate対象となるレコードの条件

を指定します。

また、rowオブジェクトから直接updateをかける事も出来ます。

$row->update({name => 'yappo'});

rowオブジェクトからupdateをかける場合はtableと対象レコードの指定は省略します。

delete

deleteメソッドでは既にあるレコードを削除します。

$db->delete('user',{id => 1});

一つ目の引数に対象となるテーブル

二つ目の引数に削除する対象となるレコードの条件を指定します。

またdeleteメソッドもupdateメソッドと同様にrowオブジェクトから直接deleteをかける事も出来ます。

$row->delete;

rowオブジェクトからdeleteをかける場合はtableと対象レコードの指定は省略します。

今日はDBIx::Skinnyの更新系メソッドinsert/bulk_insert/update/deleteの説明をしました

明日は引き続きDBIx::Sknnyが持っている更新メソッドの説明をしたいと思います。

have a nice skinny days!:)