"SQLSTATE[23000]: Verletzung der Integritätsbeschränkung: 1062 Doppelter Eintrag '0' für Schlüssel 'PRIMARY' ( SQL: Werte (abcd#1234, 1234, web, 2025-01-06) in Rollen (Name, Geschäfts-IDs, Schutzname, aktualisiertes_at, erstelltes_at) einfügen 13:29:42, 2025-01-06 13:29:42))"
Ich verwende die Spatie-Bibliothek, um Rollen und Begegnungen zu erstellen das obige Problem. Wenn ich den Fehler protokolliere, wird angezeigt, dass die ID 0 ist und dupliziert wird. Ich habe versucht, DB::beginTransaction(); zu verwenden, aber es ist nicht effektiv. Ich suche nach Anleitungen, wie ich damit umgehen soll.
Code: Select all
DB::beginTransaction();
$this->businessUtil->newBusinessDefaultResources($business->ids, $user->id);
DB::commit();
Code: Select all
use Spatie\Permission\Models\Role;
public function newBusinessDefaultResources($business_ids, $user_id, $business_category_id=null)
{
$role = Role::create([ 'name' => 'abcd#' . $business_ids,
'business_id' => $business_ids,
'guard_name' => 'web', 'is_default' => 1
]);
$user->assignRole($role->name);
//Create Cashier role for a new business
$c_role = Role::create([ 'name' => 'abcde#' . $business_ids,
'business_ids' => $business_ids,
'guard_name' => 'web'
]);
//Create Tutor role for a new business
$p_role = Role::create(['name' => 'abcdef#' . $business_ids,
'business_ids' => $business_ids,
'guard_name' => 'web',
'is_default' => 1
]);
dd(1);
Ich habe versucht, DB::beginTransaction(); zu verwenden, aber das ist nicht der Fall effektiv