2008年8月12日火曜日

 

【Symfony】モデルからDBを操作

symfony/MVC/モデル実践(CRUD) - 634 Incubator
symfony - データベースを扱うには? - てくめも@coop

次の様なテーブルがDBにあるとする。

DBモデル - テーブル名:user
user_idnameagecreated_atupdated_at
1Suzuki242008-08-12 12:30:372008-08-12 12:30:37
2Tanaka262008-08-12 12:30:372008-08-12 12:30:37
3Chiba282008-08-12 12:30:372008-08-12 12:30:37

検索・データの取得(Read)

// プライマリ・キーが1のデータを取得

$user = UserPeer::retrieveByPK(1);
echo $user->getUser_id();
echo $user->getName();
echo $user->getAge();

//出力

1
Suzuki
24

[TableName]Peer::retrieveByPK()を使って取得。各カラムの値はget[CulmName]()メソッドを使って取得する。
UserPeer::retrieveByPK(1,3);とすると2つのフィールドが返される。

条件を指定したデータの検索はCriteria()クラスを使う。詳しくは以下。
条件(検索条件やソート順等)を指定した読み取り(Criteriaクラスの利用)

//カラム"age"が"26"のデータ検索

$criteria = new Criteria();
$criteria->add(UserPeer::AGE, 26);
$user = UserPeer::doSelect($criteria);

挿入・データの追加(Create)


$user = new User();
$user->setName("Yamada");
$user->setAge(26);
$user->save();

set[CulmName]()メソッドを使って挿入。created_atupdated_atというカラム名を付けるとSymfonyが自動でデータ作成日時とデータ更新日時を入れてくれる。

更新・データの編集(Update)


// プライマリ・キーが1のデータを取得
$user = UserPeer::retrieveByPK(1);
// 年齢を更新
$user->setAge($user->getAge() + 1);
// 変更をテーブルに反映
$user->save();

データの追加同様にset[CulmName]()メソッドを使って編集。UserPeer::retrieveByPK()で事前にデータを取得しているかどうか。

削除(Delete)

//プライマリ・キー(user_id)で削除

UserPeer::doDelete(1);

doDelete()で削除。

//条件で検索したデータを削除

$user = UserPeer::retrieveByPK(1);
UserPeer::doDelete($user);

または次の様な感じだろうか。

//カラム"age"が"26"のデータを削除

$criteria = new Criteria();
$criteria->add(UserPeer::AGE, 26);
$user = UserPeer::doSelect($criteria);
UserPeer::doDelete($user);

ラベル:


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google