Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
How to perform a conditional update using Fatfree framework's ORM

The situation consists of attempting to use F3 ORM (MySQL) with a state machine. A transaction/action should only be performed/persisted to the database if the original status allows for the transition to occur.

The code below loads the object, applies the new state, creates a new transaction, and attempts to ensure that the state in the database is as expected by updating the record to the new state.

$instance = $f3->get('domainObject')->load(['id=?', $id]);

$stateMachine = new StateMachine($instance, $config);
$originalState = $instance->stateA;
  
$stateMachine->apply($body['state']);

$db->begin();
$db->exec(
  'UPDATE domainObject SET stateA=? WHERE stateA=?',
  $instance->stateA,
  $originalState
);
$instance->save();
$db->commit();

Even though the update and the save is within the same transaction the modification occurs even if the update fails to update the record (say when the stateA has changed).

How can I use F3 ORM to conditionally update the model with a clause that states stateA should be a certain value?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Assuming that $instance is an instance of DB\SQL\Mapper and that stateMachine->apply($body['state']) modifies $instance->stateA, then it should be as simple as:

$instance = $f3->get('domainObject')->load(['id=?', $id]);

$stateMachine = new StateMachine($instance, $config);

$instance->save();

The save() method triggers an UPDATE query, only if a field has been changed.

NB: be careful that the load() method may return FALSE. Your code should handle that case.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda