基于组的自动增量

时间:2019-08-04 05:32:19

标签: php mysql laravel laravel-5

在我的员工表中,实体是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不会是唯一的问题。

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

1 个答案:

答案 0 :(得分:0)

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

雄辩:

 <table border=0 cellpadding=10>
                <tr>
                    <td><img src="map1@2x.png" width=30></td>
                    <td><font size=5>Normal map</font></td>
                </tr>
                <tr>
                    <td><img src="map2@2x.png" width=30></td>
                    <td><font size=5>Satellite map</font></td>
                </tr>
                <tr>
                    <td><img src="map3@2x.png" width=30></td>
                    <td><font size=5>Toner (black and white) map</font></td>
                </tr>
                <tr>
                    <td><img src="map4@2x.png" width=30></td>
                    <td><font size=5>Watercolor map</font></td>
                </tr>
                <tr>
                    <td><img src="map5@2x.png" width=30></td>
                    <td><font size=5>Greyscale map</font></td>
                </tr>
            </table>

针对非口才的人:

$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) {
    }
}
相关问题