2

我正在使用 Zend,我需要检查数据库中的一行是否已经存在(一个简单的解决方案来消除我遇到的重复键错误)。我尝试了几件事,但似乎没有任何效果......(例如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 回答