如何为 2 列添加唯一键:employee_id 并且只有日期列中的月份和年份
How to add unique key for 2 columns : employee_id and only month and year from the date column
我有一个 table,其中包含所有员工的详细信息。我想让 employee_id 和 date_of_salary 中的唯一月份和年份在 table 上唯一。该特定员工 ID 和 month/year 应该只存在一行。 date_of_salary 是日期数据类型的列。
我尝试使用以下内容,但这适用于员工 ID 和完成日期。同一个月需要多个条目。
$table->unique(['employee_id', 'date_of_salary']);
这是我完成的迁移函数
public function up()
{
Schema::create('employee_salary_details', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('employee_id')->required();
$table->date('date_of_salary')->required();
$table->foreign('employee_id')
->references('id')
->on('employees')
->onDelete('restrict');
$table->unique(['employee_id', 'date_of_salary']);
$table->timestamps();
});
}
对于员工和薪水,每一行都应该是唯一的 month/year。因为工资一个月只能发一次,但是可以在任何一天发。
->unique()
表示例如 date_of_salary
列具有唯一日期。所以你不能多次添加'2018-12-21',在整个列中只添加一次。
我认为你需要 ->primary(['employee_id', 'date_of_salary'])
,如果你想要多列的唯一行。
| employee_id | date_of_salary |
+-------------+----------------|
| 1 | 2018-11-21 | <- OK
| 1 | 2018-12-21 | <- OK
| 2 | 2018-12-21 | <- OK
| 1 | 2018-12-21 | <- Not possible
在数据库中为日、月和年创建了 3 个不同的字段。将 employee_id、月份和年份设为具有 3 个列名称的唯一键。
我有一个 table,其中包含所有员工的详细信息。我想让 employee_id 和 date_of_salary 中的唯一月份和年份在 table 上唯一。该特定员工 ID 和 month/year 应该只存在一行。 date_of_salary 是日期数据类型的列。
我尝试使用以下内容,但这适用于员工 ID 和完成日期。同一个月需要多个条目。
$table->unique(['employee_id', 'date_of_salary']);
这是我完成的迁移函数
public function up()
{
Schema::create('employee_salary_details', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('employee_id')->required();
$table->date('date_of_salary')->required();
$table->foreign('employee_id')
->references('id')
->on('employees')
->onDelete('restrict');
$table->unique(['employee_id', 'date_of_salary']);
$table->timestamps();
});
}
对于员工和薪水,每一行都应该是唯一的 month/year。因为工资一个月只能发一次,但是可以在任何一天发。
->unique()
表示例如 date_of_salary
列具有唯一日期。所以你不能多次添加'2018-12-21',在整个列中只添加一次。
我认为你需要 ->primary(['employee_id', 'date_of_salary'])
,如果你想要多列的唯一行。
| employee_id | date_of_salary |
+-------------+----------------|
| 1 | 2018-11-21 | <- OK
| 1 | 2018-12-21 | <- OK
| 2 | 2018-12-21 | <- OK
| 1 | 2018-12-21 | <- Not possible
在数据库中为日、月和年创建了 3 个不同的字段。将 employee_id、月份和年份设为具有 3 个列名称的唯一键。