Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

141
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!