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