我正在使用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 */ }
它确实有效,但似乎需要更多时间(呃,因为额外的查询)而且我有点不确定我是否应该坚持这个......
欢迎任何建议:)
答案 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 {
}