这是检查db_row是否存在的有效方法吗?

时间:2012-06-16 19:35:16

标签: zend-framework zend-db

我正在使用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 */ }

它确实有效,但似乎需要更多时间(呃,因为额外的查询)而且我有点不确定我是否应该坚持这个......

欢迎任何建议:)

1 个答案:

答案 0 :(得分: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 {

}