2011年3月28日月曜日

3/28覚書

1時間目

☆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);