我想要一个函数将一个字段“is_featured”更改为给定ID的事件模型的1(真),以将事件标记为“精选”。如何在CakePHP中更新1字段?
class EventsController extends AppController{
function feature($id){}
}
我想要一个函数将一个字段“is_featured”更改为给定ID的事件模型的1(真),以将事件标记为“精选”。如何在CakePHP中更新1字段?
class EventsController extends AppController{
function feature($id){}
}
您可以使用saveField到例如
$this->Event->id = $id;
$this->Event->saveField('is_featured', true);
您可以通过两种方式在一个领域进行更新为此 :
$this->Model->id=$id;
$this->Model->saveField("fieldName","value");
OR
$this->Model->updateAll(array("fieldName"=>"value"),array("fieldName"=>"condition"));
在第二个e xample,第一阵列将更新定义的字段和第二阵列的值定义了“WHERE”条件
-1有两种以上的方式来保存一个字段。最明显的两个是[saveField](http://book.cakephp.org/2.0/en/models/saving-your-data。html#model-savefield-string-fieldname-string-fieldvalue-validate-false)和[save](http://book.cakephp.org/2.0/en/models/saving-your-data.html#model-保存阵列数据无效布尔验证-真阵列字段列表阵列)。 updateAll不是一个好主意,如果没有必要,并且由于写入会产生sql错误,因为[字段被视为sql表达式](http://book.cakephp.org/2.0/en/models/saving-your-data html的#模型updateall阵列场阵列条件)。 – AD7six 2013-06-21 08:47:01
也可以使用设置()方法
$this->Model->read(null, $id);
$this->Model->set(array(
'fieldname' => 'value',
));
$this->Model->save();
可以使用这种技术来更新字段(一个或多个)
$this->Event->save($this->request->data, true, array('id', 'is_featured'))
如果你不希望修改字段保存时添加一些数据'modified' => false
到您的$ data数组 如果不通过ID,机型不能设置主键自动更新和将“添加”而不是“e DIT”领域(S)
在我看来,当你需要更新多个领域时,这是最安全的方法。如果只有一个字段需要更新,我会使用'saveField'。 – marcocamejo 2015-12-04 13:43:22
在CakePHP 3更新您的数据:
包括在你的控制器:
use Cake\ORM\TableRegistry;
在你的行动:
$articlesTable = TableRegistry::get('Articles');
$article = $articlesTable->get(12); // Return article with id 12
$article->title = 'CakePHP is THE best PHP framework!';
$articlesTable->save($article);
奇怪;有时候我喜欢诉诸于普通的旧SQL:一个班轮+无开销那里,让我确信没有回调/事件涉足
$id = (int) $id;
$this->Event->query("UPDATE events SET is_featured=1 WHERE id=$id");
你可以做到这一点很容易(注意这可能不是你想要的!) way
$this->Event->saveField('username', $user); //Where username is Model field name and $user is value
saveField函数是否属于控制器或模型类? – gkalikapersaud 2014-05-21 20:44:34
@ user2128444它是一个模型函数,但您可以在控制器和模型中使用它。答案中的示例将放置在控制器中。在模型中使用它将看起来像这样:$ this-> id = $ id; $ this-> saveField('is_featured',true);'。 – Hippie 2014-05-24 09:18:19
你好,我想知道是什么时候表没有id字段和如何保存?它不是id在我的表中使用pid。 ** $ this-> Event-> pid = $ id **不正确?如何检查我的情况.. – 2015-03-12 07:58:37