Php 如何在eloquent中创建多列主键
我在数据库中存储经理、课程类型和课程年数 我将根据递增值命名课程,例如Php 如何在eloquent中创建多列主键,php,mysql,sql,laravel,eloquent,Php,Mysql,Sql,Laravel,Eloquent,我在数据库中存储经理、课程类型和课程年数 我将根据递增值命名课程,例如 Course_type course_order course_year Course_type[0] 1 2015 Course_type[0] 2 2015 Course_type[0] 3 2015 Course_type[0] 4
Course_type course_order course_year
Course_type[0] 1 2015
Course_type[0] 2 2015
Course_type[0] 3 2015
Course_type[0] 4 2015
Course_type[0] 1 2016
Course_type[1] 1 2015
Course_type[2] 1 2015
Course_type[2] 2 2015
所以我创建了一个数据库
Schema::create('courses', function (Blueprint $table) {
$table->increments('id');
$table->enum('course_type', [
'Yos',
'TomerABC',
'TomerA1A2',
'TomerB1B2',
'TomerC1C2',
'TomerAB',
'TomerBC',
'SatMatGeo',
'SatCriRea',
'SatCriReaMat',
]);
$table->integer('added_by');
$table->integer('start');
$table->integer('year_code');
$table->integer('end');
$table->integer('course_order');
$table->unique( array('added_by','year_code','course_order') );
这是我在createprocess上的控制器
$courseorder = \App\Courses::where('added_by', \Auth::id())
->where('year_code', $input['year_code'])->max('course_order');
$course->course_order = $courseorder + 1;
但由于我在数据库中查找max('course\u order'),如果我删除了,就让我们假设course order 2。下一个增加的课程将是4而不是3
所以我的问题是,在删除一个后,如何检查填充位置的课程顺序之间缺少的值
另外,我认为mysql解决方案将比php更快更好 您可以使用新表存储已删除的记录。
当您首先需要一个新的课程订单号时,您应该检查DeletedCourses表。如果DeletedRecord具有匹配的记录,请将其从DeletedRecords表中删除,并将其用于新课程订单 搜索丢失的数字是常见的SQL问题。我会用理货台的方法。