在我的员工表中,实体是employee_id, name, type

有3种类型的员工。这些是:ST,WF,WP

因此,当员工信息输入数据库表时将如下所示

employee_id  name     type
WP 1          john      WP
WP 2          doe       WP
ST 1          jhonny    ST
WF 1          tuna      WF
ST 2          tian      ST
WP 3          Rian      WP


这里的问题是如何根据类型输入employee_id自动增量

有一种解决方案可能就像它将从表中计算员工类型并根据类型添加count+1。但是当多个用户将雇员数据库输入到表中时,多个用户将获得相同的计数,并且employee_id不会是唯一的问题。

我如何获得最佳解决方案?谢谢

最佳答案

您可以尝试在(employee_id,type)上创建唯一索引并捕获异常。

雄辩的:

$employee = new Employee($data);

$saved = false;

while (!$saved) {
    try {
        $count = Employee::where('type', $employee->type)->count();
        $employee->employee_id = $employee->type . ' ' . ($count + 1);
        $employee->save();
        $saved = 1;
    } catch (\Illuminate\Database\QueryException $e) {
    }
}


对于非口才:

$type = 'some type';
$saved = false;

while (!$saved) {
    try {
        $count = DB::table('employees')->where('type', $type)->count();

        DB::table('employees')->insert([
            'employee_id' => $type . ' ' . ($count + 1)
            ...
        ]);

        $saved = 1;
    } catch (\Illuminate\Database\QueryException $e) {
    }
}

关于php - 基于组的自动增量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57344083/

10-13 09:09