Je souhaite qu'une fonction modifie un champ "is_featured" en 1(true) du modèle d'événement d'un ID donné, pour marquer un événement comme "En vedette".
class EventsController extends AppController{
function feature($id){}
}
vous pouvez utiliser saveField pour faire cela par exemple
$this->Event->id = $id;
$this->Event->saveField('is_featured', true);
Vous pouvez également utiliser la méthode set ()
$this->Model->read(null, $id);
$this->Model->set(array(
'fieldname' => 'value',
));
$this->Model->save();
Vous pouvez effectuer la mise à jour dans un champ de deux manières:
$this->Model->id=$id;
$this->Model->saveField("fieldName","value");
OR
$this->Model->updateAll(array("fieldName"=>"value"),array("fieldName"=>"condition"));
dans le deuxième exemple, le premier tableau mettra à jour la valeur du champ défini et le deuxième tableau définira la condition "WHERE"
Dans Cakephp 3 pour mettre à jour vos données:
Inclure dans votre contrôleur:
use Cake\ORM\TableRegistry;
Dans votre action:
$articlesTable = TableRegistry::get('Articles');
$article = $articlesTable->get(12); // Return article with id 12
$article->title = 'CakePHP is THE best PHP framework!';
$articlesTable->save($article);
Vous pouvez utiliser cette technique pour mettre à jour le (s) champ (s)
$this->Event->save($this->request->data, true, array('id', 'is_featured'))
Si vous ne souhaitez pas que le champ modifié soit automatiquement mis à jour lors de l'enregistrement de certaines données, ajoutez 'modified' => false
à votre tableau $ data Si vous ne transmettez pas l'id, le modèle ne peut pas définir sa clé primaire et va «ajouter» “Éditer” le (s) champ (s)
Vous pouvez faire ce moyen facile
$this->Event->saveField('username', $user); //Where username is Model field name and $user is value
étrangement; Parfois, j'aime bien utiliser des vieux sql: one-liner + no overhead, m'assure qu'aucun rappel/événement ne soit impliqué (attention ce n'est peut-être pas ce que vous voulez!)
$id = (int) $id;
$this->Event->query("UPDATE events SET is_featured=1 WHERE id=$id");