我想要一个函数将一个字段,“is_featured”改为给定ID的事件模型的1(true),以将事件标记为“精选”。
class EventsController extends AppController{
function feature($id){}
}
答案 0 :(得分:74)
您可以使用saveField执行此操作 例如
$this->Event->id = $id;
$this->Event->saveField('is_featured', true);
答案 1 :(得分:12)
您可以通过两种方式在一个字段中执行更新:
$this->Model->id=$id;
$this->Model->saveField("fieldName","value");
OR
$this->Model->updateAll(array("fieldName"=>"value"),array("fieldName"=>"condition"));
在第二个例子中,第一个数组将更新定义字段中的值,第二个数组定义" WHERE"条件
答案 2 :(得分:11)
您也可以使用set()方法
$this->Model->read(null, $id);
$this->Model->set(array(
'fieldname' => 'value',
));
$this->Model->save();
答案 3 :(得分:3)
在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);
答案 4 :(得分:1)
您可以使用此技术更新字段
$this->Event->save($this->request->data, true, array('id', 'is_featured'))
如果您不希望在保存某些数据时自动更新已修改的字段,请将'modified' => false
添加到$ data数组
如果您未传递ID,则模型无法设置其主键并将“添加”而不是“编辑”字段
答案 5 :(得分:0)
奇怪;有时我喜欢使用普通的旧sql:单行+没有开销,确保没有涉及回调/事件(请注意这可能不是你想要的!)
$id = (int) $id;
$this->Event->query("UPDATE events SET is_featured=1 WHERE id=$id");
答案 6 :(得分:0)
你可以轻松地做到这一点
$this->Event->saveField('username', $user); //Where username is Model field name and $user is value