Подтвердить что ты не робот

Как обновить поле 1 в CakePHP?

Я хочу, чтобы функция изменяла одно поле "is_featured" до 1 (true) модели Event данного идентификатора, чтобы отметить событие как "Featured".

class EventsController extends AppController{
function feature($id){}
}
4b9b3361

Ответ 1

вы можете использовать saveField для этого например

$this->Event->id = $id;
$this->Event->saveField('is_featured', true);

Ответ 2

Вы также можете использовать метод set()

$this->Model->read(null, $id);
$this->Model->set(array(
      'fieldname' => 'value',
));
$this->Model->save();

Ответ 3

Вы можете выполнить обновление в одном поле двумя способами:

    $this->Model->id=$id;
    $this->Model->saveField("fieldName","value");

ИЛИ

    $this->Model->updateAll(array("fieldName"=>"value"),array("fieldName"=>"condition"));

во втором примере первый массив будет обновлять значение в определенном поле, а второй массив определяет условие "WHERE"

Ответ 4

В 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);
    

Источник: http://book.cakephp.org/3.0/en/orm/saving-data.html

Ответ 5

Вы можете использовать этот метод для обновления полей (ов)

$this->Event->save($this->request->data, true, array('id', 'is_featured'))

Если вы не хотите, чтобы измененное поле автоматически обновлялось при сохранении некоторых данных, добавьте 'modified' => false в ваш массив данных $ Если вы не передадите идентификатор, модель не сможет установить свой первичный ключ и будет "добавлять" вместо "редактировать" поле (ы)

Ответ 6

странно; иногда мне нравится прибегать к обычным старым sql: однострочный + без накладных расходов, заставляет меня уверенно, что никаких обратных вызовов/событий не будет задействовано (будьте осторожны, это может быть не то, что вы хотите!)

$id = (int) $id;
$this->Event->query("UPDATE events SET is_featured=1 WHERE id=$id");

Ответ 7

Вы можете сделать это легко.

$this->Event->saveField('username', $user); //Where username is Model field name and $user is value