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