Dans certaines parties de mon application, je ne dois mettre à jour que le champ is_active
de certaines table
avec beaucoup de champs. Quelle est la meilleure approche pour mettre à jour uniquement ce champ et éviter les validations et les exigences de tous les autres champs?
Et si vous voulez mettre à jour uniquement une ligne, utilisez ceci:
$users= TableRegistry::get('Users');
$user = $users->get($id); // Return article with id = $id (primary_key of row which need to get updated)
$user->is_active = true;
// $user->email= [email protected]; // other fields if necessary
if($users->save($user)){
// saved
} else {
// something went wrong
}
Voir ici ( Mise à jour des données dans CakePHP3 ).
Cela fonctionnera:
$users = TableRegistry::get('Users');
$query = $users->query();
$query->update()
->set(['is_active' => true])
->where(['id' => $id])
->execute();
http://book.cakephp.org/3.0/en/orm/query-builder.html#updating-data
Si vous ne voulez pas que les rappels soient déclenchés, utilisez simplement updateAll ()
$table->updateAll(['field' => $newValue], ['id' => $entityId]);
En utilisant l'exemple ici: http://book.cakephp.org/3.0/fr/orm/database-basics.html#running-update-statements . Exécutez le code ci-dessous pour mettre à jour tous les enregistrements de la table table_name_here
avec une nouvelle valeur pour la colonne is_active
.
use Cake\Datasource\ConnectionManager;
$connection = ConnectionManager::get('default');
$connection->update('table_name_here', ['is_active' => 'new_value_here']);