Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP模型中只有一个微小的阳性_Cakephp_Model_Tinyint - Fatal编程技术网

CakePHP模型中只有一个微小的阳性

CakePHP模型中只有一个微小的阳性,cakephp,model,tinyint,Cakephp,Model,Tinyint,在我的模型中,我们称之为“问题”,我有“活动”字段(TINYINT)。其思想是,该特定模型中只有一个条目可以激活。因此,当我通过选中“活动”复选框来更新一个条目时,该条目应变为活动条目,而另一个条目应变为非活动条目(我指的是以前一直处于活动状态的条目)。知道我应该使用什么查询吗?例如,某种切换行为。 您编写的此行为使模型$actsAs=array('Toggable',array('field'=>'active') 在你的afterSave钩子中,你做一个updateAll调用,将所有活动的钩

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

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

在你的afterSave钩子中,你做一个updateAll调用,将所有活动的钩子重置为非活动的(当然,除了当前id)

这将是最干净的方法。
当然,你可以用模型挂钩自己来制作一个又快又脏的。我不知道怎么做。这略高于我目前的知识:)

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

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'));
            }

        }
function admin\u edit($id=null){
$this->Question->id=$id;
if(空($this->data)){
$this->data=$this->Question->read();
}否则{
如果($this->Question->save($this->data)){
$active=$this->data['Question']['active'];
$total=$this->Question->find('count');
$i=1;
如果($i='1'){
while($active Question->query(“UPDATE questions SET active='0');
$i++;
}
$this->Question->query(“更新问题集活动='1',其中id='$id');
}
$this->redirect(数组('action'=>'index'));
}
}

这是可行的,但我想这不是“最干净的方法”。有什么建议可以简化它吗?

PS:这是一个做类似事情的旧版本:(但你可能应该自己做2.x one——只是为了一些基本的行为准则)我在这里回答了一个类似的问题: