Ich lerne Laravel, arbeiten am 5.22. Ich versuche, zwei Datensätze in zwei Tabellen zu speichern, aber die Änderungen nur zu bestätigen, wenn beide Seiten Erfolg haben, sonst möchte ich, dass es fehlschlägt und Rollback.Laravel 5.2 führen mehrere db-Transaktionen dann Commit oder Rollback, wenn fehlgeschlagen
Mein Controller-Code für das Speichern ist:
public function store(Request $request)
{
$all = $request->all();
// we need to fill in who is the creator of this new user,
$all['creator_user_id'] = Auth::user()->id;
// Commit both updates or fail and rollback
DB::transaction(function ($all) {
$client = Client::create($all);
$orgClient['organisation_id'] = $client->organisation_id;
$orgClient['client_id'] = $client->client_id;
OrganisationClient::create($orgClient);
});
return redirect()
->route('client.index')
->withMessage([
'type' => 'success',
'value' => 'Client <strong>' . $all->client_name . '</strong> successfully created.']);
}
Dieser schlägt mit dem Fehler:
Type error: Argument 1 passed to Illuminate\Database\Eloquent\Model::create() must be of the type array, object given, called in /home/vagrant/Code/simply-invoice/app/Http/Controllers/ClientController.php on line 80
scheint Mein Problem $all
zur Schließung zu übergeben. Wenn ich $all
aus dem Abschluss-Parameter entferne, bekomme ich undefined variable all
. Wie mache ich das? Vielen Dank!
Dank @Roj Vroemen, lernen eine andere für heute! – TheRealPapa