Tengo una estructura de transacción simple y una relación de pertenencia a muchos entre 2 modelos de usuario y patrocinador. Descubrí que los datos de la relación no se guardan en la tabla dinámica, cuando los envuelvo dentro de una transacción. Sin una transacción funciona bien. ¿Es este un error de día cero en laravel (marco v8.40) o funciona de alguna manera diferente?
Mis modelos se definen así:
class Sponsoring extends Model { use HasFactory; use SoftDeletes; public function users() { return $this->belongsToMany(User::class, 'user_sponsorings'); } // ... } class User extends Authenticatable implements HasLocalePreference { use SoftDeletes; use HasFactory; use Notifiable; public function sponsorings() { return $this->belongsToMany(Sponsoring::class, 'user_sponsorings'); } // ... }Mi código se parece a:
//DB::beginTransaction(); try { $sponsoring = new Sponsoring(); // ... $sponsoring->save(); $userIds = [ Auth::user()->id ]; // ... $sponsoring->users()->sync($userIds); } catch (\Exception $ex) { //DB::rollBack(); throw new Error('could not save sponsoring: ' . $ex->getMessage()); } //DB::commit();