我正在尝试仅更新数据库中保存的用户的一条信息,cakephp接受每个属性的值数组,但是我没有其他属性的值,cakephp不会更新该行,因为它是期望在该行中找到所有值。
第一种方式:使用query()创建一个新的Query对象:
$users = TableRegistry::get('Users');
$query = $users->query();
$query->update()
->set(['is_active' => true])
->where(['id' => $id])
->execute();
第二种方法:使用PatchEntity
在将数据创建或合并到实体中时使用fieldList()选项:
这将允许您仅更新或插入您想要的字段
$user = $this->Users->get($id);
if ($this->request->is(['post', 'put'])) {
//assume $this->request->data Contains field as ['name' => 'myname', 'title' => 'Hacked!'];
$user = $this->Users->patchEntity($user, $this->request->data, [
'fieldList' => ['title']]);
// Only allow title to be changed
if ($this->Users->save($user)) {
$this->Flash->success(__('Your user has been updated.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('Unable to update your user.'));
}
http://book.cakephp.org/3.0/en/orm/saving-data.html#changing-accessible-fields
http://book.cakephp.org/3.0/en/orm/query-builder.html#updating-data
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句