0

在我的模型中,我们称之为“问题”,我有“活动”字段(TINYINT)。这个想法是,该特定模型中只有一个条目可以处于活动状态。因此,当我通过选中“活动”复选框来更新一个条目时,该条目应该变为活动状态,而另一个应该变为非活动状态(我的意思是之前一直处于活动状态的那个)。知道我应该使用什么查询吗?

4

2 回答 2

2

例如某种切换行为。您编写的这种行为使模型$actsAs = array('Toggable', array('field'=>'active'));

并在您的 afterSave 挂钩中进行 updateAll 调用以将所有活动的重置为非活动的(当然当前 id 除外)

那将是最干净的方法。当然,您总是可以为此使用模型钩子本身制作一个快速而肮脏的模型。

于 2012-08-30T09:01:13.790 回答
0

我不知道该怎么做。这略高于我目前的知识:)

到目前为止,这就是我的想法:

function admin_edit($id = null) {
        $this->Question->id = $id;

        if (empty($this->data)) {
            $this->data = $this->Question->read();
        } else {

            if ($this->Question->save($this->data)) {
                $active = $this->data['Question']['active'];
                $total = $this->Question->find('count');
                $i=1;

                if ($i == '1') {
                    while($active <= $total){
                        $this->Question->query("UPDATE questions SET active = '0'");
                        $i++;
                    }

                    $this->Question->query("UPDATE questions SET active = '1' WHERE id = '$id'");
                }

                $this->redirect(array('action' => 'index'));
            }

        }

它正在工作,但我想这不是“最干净的方法”。任何提示如何简化它之后?

于 2012-08-30T11:18:46.943 回答