"SQLSTATE[23000]: нарушение ограничения целостности: 1062 Дублирующаяся запись '0' для ключа 'PRIMARY' ( SQL: вставка в роли (имя, business_ids, Guard_name, обновленный_at, созданный_at) значения (abcd#1234, 1234, web, 2025-01-06 13:29:42, 2025-01-06 13:29:42))"
Я использую библиотеку Spatie для создания ролей и возникновения вышеуказанной проблемы. Когда я регистрирую ошибку, она показывает, что идентификатор равен 0 и он дублируется. Я пробовал использовать DB::beginTransaction();, но это неэффективно. Мне нужны инструкции, как с этим справиться.
Код: Выделить всё
DB::beginTransaction();
$this->businessUtil->newBusinessDefaultResources($business->ids, $user->id);
DB::commit();
Код: Выделить всё
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);
Роли информационной таблицы:
Роли информационной таблицы
Я пробовал используя DB::beginTransaction();, но это неэффективно
Подробнее здесь: https://stackoverflow.com/questions/793 ... for-key-pr