如何更新CakePHP中的1个字段?

Moe*_*eet 32 cakephp

我想要一个函数来改变一个字段,"is_featured"为给定ID的事件模型的1(真实),以将事件标记为"特色".

class EventsController extends AppController{
function feature($id){}
}
Run Code Online (Sandbox Code Playgroud)

dqm*_*inh 75

例如,您可以使用saveField来执行此操作

$this->Event->id = $id;
$this->Event->saveField('is_featured', true);
Run Code Online (Sandbox Code Playgroud)

  • @ user2128444它是一个模型函数,但您可以在控制器和模型中使用它.答案中的示例将放在控制器中.在模型中使用它看起来像这个`$ this-> id = $ id; $ this-> saveField('is_featured',true);`. (2认同)

小智 12

您可以通过两种方式在一个字段中执行更新:

    $this->Model->id=$id;
    $this->Model->saveField("fieldName","value");
Run Code Online (Sandbox Code Playgroud)

要么

    $this->Model->updateAll(array("fieldName"=>"value"),array("fieldName"=>"condition"));
Run Code Online (Sandbox Code Playgroud)

在第二个示例中,第一个数组将更新已定义字段中的值,第二个数组将定义"WHERE"条件

  • -1保存字段的方法有两种以上.最明显的两个是[saveField](http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-savefield-string-fieldname-string-fieldvalue-validate-false),和[保存](http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-save-array-data-null-boolean-validate-true-array-fieldlist-array ).updateAll不是一个好主意,如果它没有必要,并且因为写入将产生一个SQL错误,因为[字段被视为sql表达式](http://book.cakephp.org/2.0/en/models/saving-your-data html的#模型updateall阵列场阵列条件). (2认同)

小智 11

您还可以使用set()方法

$this->Model->read(null, $id);
$this->Model->set(array(
      'fieldname' => 'value',
));
$this->Model->save();
Run Code Online (Sandbox Code Playgroud)