首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend只执行两个表更新中的一个

Zend只执行两个表更新中的一个
EN

Stack Overflow用户
提问于 2012-09-13 21:18:44
回答 1查看 59关注 0票数 2

我有一小段代码来更新元素的位置

代码语言:javascript
复制
public function moveUp($id) {

        $row = $this->find($id)->current();

        $kategoria = $row->kategoria;
        $position = $row->position;

        if($position > 1) {

            $data1 = array(
                    'position'  => new Zend_Db_Expr('position - 1')
                );
            $where1['id = ?'] = $id;

            $this->getDefaultAdapter()->update($this->_name, $data1, $where1);  

            $data2 = array(
                    'position'  => new Zend_Db_Expr('position + 1')
                );

            $where2['position = ?'] = $position - 1;
            $where2['kategoria = ?'] = $kategoria;  

            $this->getDefaultAdapter()->update($this->_name, $data2, $where2);

        }
    }

问题是只执行第二次更新,而第一次什么也不做。如果我注释掉第二次更新,那么第一次更新就可以正常工作。为什么会这样呢?

另外,我应该检查下一个更小/更大的位置,而不仅仅是+/- 1吗?也就是说,假设应用程序的其他部分中的代码不会在位置列中留下空白。

EN

回答 1

Stack Overflow用户

发布于 2012-09-13 21:33:34

好吧,我想明白了。在第一次更新之后,两行具有相同的position,因此第二次更新会影响两行而不是一行。

通过添加

代码语言:javascript
复制
$where2['id != ?'] = $id;  
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12407230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档