Db_BaseDAO


DBとの連携

factory($condition)

  • $conditionは検索条件
    • 条件が1つ
      $condition = "upload.user_id = 3";
    • 条件が2つ以上その1
      $condition[0] = "upload.user_id = 3";
      $condition[1] = "upload.date = 1118166132";
    • 条件が2つ以上その2
      $condition = array("upload.user_id = 3","upload.date = 1118166132");
  • 使用例
    $condition = "upload.user_id = 3";
    $list = listDAO->factory($condition);

insert()

  • 使用例
    $hogeDAO->setRequest($this->request);
    $hogeDAO->insert();
  • Var::Dump($this->request)
    array(4) {
      userName => string(8) てすと君
      loginId => string(12) test@a.co.jp
      passwd => string(13) Apu41e3t/9dCU
      level => string(1) 3
    }

update($id)

  • primaryを設定しておく
    • その1:dicon.ini
      [hogeDAO]
      map[…] = …
      relation = …
      primary = "user.user_id"
    • その2:setPrimary()
      $hogeDAO->setPrimary("user.user_id")
  • 使用例
    $hogeDAO->setRequest($this->request);
    $hogeDAO->update(1);

delete($id)

  • primaryを設定しておく
  • 使用例
    $hogeDAO->delete(1);

setRequest($request)

  • なぜRequestなのか? (書きかけ)
    • DTOオブジェクト代わりにデータを配列で流したかった。
    • つまりDTO配列の名前が「Request」な訳だが、非常に微妙。
    • なぜ「Request」と命名したのかは、多分理由があったはずだが、、、。自己調査中。

理想的な使い方(RRマッピング)

  • データの流れ
    1. テンプレート
      <input type="text" name="request[userName]">
      <input type="text" name="request[loginId]"> 
      <input type="text" name="request[passwd]">
    2. Validate(maple.ini)
      [Validate]
      request[userName].required = "1,名前を入力してください"
      request[userName].maxlength = "0,名前は全角15文字以内で入力してください,15"
      request[loginId].required = "1,メールアドレスを入力してください"
      request[loginId].maxlength = "1,メールアドレスは60文字以内入力してください,60"
      request[loginId].mail = "0,メールアドレスを正しく入力してください"
      request[passwd].required = "1,パスワードを入力してください"
      request[passwd].minlength = "1,パスワードは4文字以上10文字以内入力してください,4"
      request[passwd].maxlength = "1,パスワードは4文字以上10文字以内入力してください,10"
    3. Action
      $this->userDAO->setRequest($this->request);
      $this->userDAO->insert();
  • DAOがSQLを吐く流れ
    1. dicon.ini
      [DIContainer]
      userDAO = "component://db.BaseDAO"
      [userDAO]
      db = dicon://DBA
      map[userName] = user.user_name
      map[loginId] = user.login_id
      map[passwd] = user.passwd
      map[level] = user.user_level
    2. Action
      $this->userDAO->setRequest($this->request);
      $this->userDAO->insert();