在CakePHP模型中只有一个小的正面

时间:2012-08-30 08:32:59

标签: cakephp model tinyint

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

2 个答案:

答案 0 :(得分:2)

例如,

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

并在你的afterSave挂钩中进行updateAll调用,将所有活动的重置为非活动状态(当然除了当前的id)

这将是最干净的方法。 当然,你可以随时使用模型钩子来制作一个快速而又脏的。

答案 1 :(得分: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'));
            }

        }

它正在发挥作用,但我想这不是“最干净的方法”。有关如何简化它的提示吗?