☆modelによるCRUD(クラッド)
以下の4つの機能を使う。
◆Create
◆Update
◆Delete
◆Read←昨日からやってるデータの呼び出し
◆Create
action側
//insertのcomment。
//インスタンス化。空のオブジェクトを生成。
$comment = new Comment();
//名前と内容を入力。
$comment->setNickname('satou');
$comment->setContent('今日はいい天気');
//insert文発行
$comment->save();
//insertのmember
//インスタンス化。空のオブジェクトを生成。
//$member = new Member();
//名前とメールを入力。idカラムは自動なので不要。
//カラムにcreated_at、update_atがあればSymfonyが自動で一緒にやってくれる。
//$member->setNickname("ooyama");
//$member->setMailaddress("ooyama@sample.com");
//insert文発行
//$member->save();
//最初に必ずセット select * from member;と同じ。
$c = new Criteria();
View側commentテーブル
<div class="tblData">
<table>
<tr>
<th>名前</th>
<th>内容</th>
</tr>
<?php foreach ($comments as $comment):?>
<tr>
<td><?php echo $comment->getNickname();?></td>
<td><?php echo $comment->getContent();?></td>
</tr>
<?php endforeach;?>
</table>
</div>
//$comment+sで複数にする。commentテーブルのすべてのデータを引き出す。
$this->comments = CommentPeer::doSelect($c);
2時間目
◆Update
Createとの差異は空のオブジェクト生成をしないことだけ。
$member = MemberPeer::retriveByPK();を使う点のみ。
//Update
$member = MemberPeer::retrieveByPK(5);
//名前とメールを入力。
$member->setNickname("ooyama");
$member->setMailaddress("ooyama@sample.com");
//insert文発行
$member->save();
◆Delete
//Delete
$member = MemberPeer::retrieveByPk(7);
//memberがあれば削除。こうしないとエラーになる。
if($member){
$member->delete();
}
☆練習問題
1.bbs2でmember_addモジュール作成
2.input、confirm、resultのaction作成
3.resultでinsert処理
1~2は3/23覚書を参考に~。
3時間目
☆練習問題答え合わせ
public function executeConfirm()
{
$this->name = $this->getRequestParameter("name");
$this->mail = $this->getRequestParameter("mail");
return sfView::SUCCESS;
}
public function executeInput()
{
return sfView::SUCCESS;
}
public function executeResult()
{
//insertのmember
//インスタンス化。空のオブジェクトを生成。
$member = new Member();
//nameとmailを変数にして渡す。
$name = $this->getRequestParameter("name");
$mail = $this->getRequestParameter("mail");
//insertのmember
//インスタンス化。空のオブジェクトを生成。
$member = new Member();
//変数にした名前とメールを入力。
$member->setNickname("$name");
$member->setMailaddress("$mail");
//insert文発行
$member->save();
return sfView::SUCCESS;
}
4時間目
1.bbs2でmember_list、member_editモジュール作成。
2.モジュール作成。一覧表に編集ページリンクつけて、idを渡す。
3.余裕のある人はdeleteで削除処理
5時間目
作成続き
6時間目
ううむidのReadがどうしても理解できなかった・・・・・・。member_addはさくっとできたのに(つД`)
自力でできなかった人は/bbs2/apps/front/modules/に移動してから、
mv member_list bk.member_list
mv member_edit bk.member_edit
でバックアップとっても一回やろう。
public function executeConfirm()
{
//IDを受け取る
$this->id = $this->getRequestParameter("id");
//名前、メールアドレスを受け取る
$this->name = $this->getRequestParameter("name");
$this->mail = $this->getRequestParameter("mail");
return sfView::SUCCESS;
}
public function executeInput()
{
//IDを受け取る
$id = $this->getRequestParameter("id");
$this->member = MemberPeer::retrieveByPK($id);
//名前、メールアドレスを受け取る(オブジェクトごと受け取るときは無しでよい)
$this->name = $this->getRequestParameter("name");
$this->mail = $this->getRequestParameter("mail");
return sfView::SUCCESS;
}
public function executeResult()
{
//update-member
//nameとmailを変数にして渡す。
$name = $this->getRequestParameter("name");
$mail = $this->getRequestParameter("mail");
//IDを指定。
$id = $this->getRequestParameter("id");
$member = MemberPeer::retrieveByPK("$id");
//変数にした名前とメールを入力。ここでIDは要らないよ。
$member->setNickname("$name");
$member->setMailaddress("$mail");
//Update実行
$member->save();
return sfView::SUCCESS;
}
insertSucces.php<form action="/member_edit/confirm/" method="POST"> 名前:<input type="text"name="name" value="<?php echo $member->getNickname();?>"><br> メールアドレス:<input type="text"name="mail" size="30" value="<?php echo $member->getMailaddress();?>"> <br> <input type="submit" name="send" value="確認"> <input type="hidden" name="id" value="<?php echo $member->getId();?>"> </form>comfirmSucces.php
<form action="/member_edit/result/" method="POST"> 名前: <?php echo $name;?> です。 <br> <input type="hidden" name="name" value="<?php echo $name;?>"> メールアドレス: <?php echo $mail;?> です。 <br> <input type="hidden" name="mail" value="<?php echo $mail;?>"> <input type="hidden" name="id" value="<?php echo $id;?>"> <input type="submit" name="send" value="更新する"> </form>resultSucces.php
完了しました。
おまけ
commentの検索
View側
<form action="/" method="POST">
名前:<input type="text" name="keyword2">
<input type="submit" name="send" value="送信"></form>
action側
//シンプルなlike検索機能bycomment
$d = new Criteria();
$keyword2 = $this->getRequestParameter("keyword2");
if($keyword2 !=""){
$d->add(CommentPeer::NICKNAME, "%".$keyword2."%", Criteria::LIKE);
}
//$comment+sで複数にする。commentテーブルのすべてのデータを引き出す。
$this->comments = CommentPeer::doSelect($d);
0 件のコメント:
コメントを投稿