加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在eloquent中创建多列主键

发布时间:2020-12-13 16:00:15 所属栏目:PHP教程 来源:网络整理
导读:我将Managers,Course_Type和Course Years存储在数据库中. 我将根据递增的值来命名我的课程,例如 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 Co
我将Managers,Course_Type和Course Years存储在数据库中.

我将根据递增的值来命名我的课程,例如

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 = AppCourses::where('added_by',Auth::id())
            ->where('year_code',$input['year_code'])->max('course_order');

$course->course_order = $courSEOrder + 1;

但是因为我在数据库中寻找max(‘course_order’)如果我删除让我们说课程顺序2.接下来添加的课程将是4而不是3.

enter image description here

所以我的问题是如何在删除之后检查course_order之间的缺失值以填充位置?

P.S一个mysql解决方案比我认为的更快,更好.

解决方法

您可以使用新表来存储已删除的记录. 当您首先需要一个新的course_order号码时,您应该检查DeletedCourses表.如果DeletedRecord有匹配的记录,则从DeletedRecords表中删除它并将其用于新的course_order.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读