CakePHP4でトランザクションを使う!
use Cake\Datasource\ConnectionManager;
use Cake\Core\Exception\Exception;
$connection = ConnectionManager::get('default');
$connection->begin();
$users = TableRegistry::getTableLocator()->get('users');
$articles = TableRegistry::getTableLocator()->get('articles');
$users->setConnection($connection);
$articles->setConnection($connection);
try {
$user = $users->newEmptyEntity();
$user->email = 'hogehoge@hogehoge.com';
$user->password = 'passpass';
$users->save($user, ['atomic' => false]);
$article = $articles->newEmptyEntity();
$article->user_id = $user->id;
$article->title = 'タイトル';
$article->body = '本文';
$articles->save($article, ['atomic' => false]);
$connection->commit();
} catch (Exception $e) {
$connection->rollback();
throw $e;
}