2

私は Zend で作業しており、DB 内の行が既に存在するかどうかを確認する必要がありました (取得していた重複キーエラーを取り除くための簡単な解決策)。私はいくつかのことを試しましたが、何もうまくいかないようでした... (たとえば、Zend_Validate_Db_NoRecordExistsメソッド)

だから私は次のコードを書きましたが、これが有効な方法なのか、それとも別の方法で行うべきなのか疑問に思っていました:

モデルでは:

 $where =  $condition = array(
        'user_id = ' . $user_id,
        'page_id = ' . $page_id
        );

        $check = $this->fetchRow($where);

        if(count($check) > 0) {

            return null;

        }else{
              // Here I create a new row, fill it with data, save and return it.
        }

そして、私の見解では:

 if($this->result != null) { /* do stuff */  }else{ /* do other stuff */ }

それは機能しますが、時間がかかるようです(追加のクエリのため)。これに固執する必要があるかどうかは少しわかりません..

どんな推薦も大歓迎です:)

4

1 に答える 1

2

コントローラーで関数をコーディングしたと仮定します

$row = $this->fetchRow($where);   //If no row is found then $row is null .

    if(!$row)
    {
    $row = $dbTb->createNew($insert); //$insert an associative array where it keys map cols of table
    $row->save();
     $this->view->row_not_found = true;
    }

    return $row;

あなたの見解では、これを行うことができます

if($this->row_not_found)
{
}else {

}
于 2012-06-17T03:33:38.067 に答える