[Day16] 第十六章-Skill的API 服务建构 (migration,route,controller,model)

前言

昨天我们建立了Skill的migtaion
我们今天目标是把简单的API定义好来实作吧!!

除了migration,route,controller,model以外
我们还要定义Skill跟User两个Model的关系喔

虽然技能跟使用者是属於多对多
但是我这边为了教学方便
我们把使用者-> 技能
定义成一对多吧(roni对微积分,物理)

目标

  1. skill的route,migration,model跟controller
  2. SKill 跟 User的Class

实作

1. Skill的 migration

在2021_09_30_154710_create_skills_table.php


<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateSkillsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('skills', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->integer('user_id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('skills');
    }
}

在这个migration里面我们新增title跟user的对应ID
user_id 是laravel的预设对应值

_id 前面的是laravel 要对应的model id值

好了之後就下

php artisan migrate

2. 新增user model 中的skill function

接者我们要让使用者拥有技能这个对应属性
我们打开User model
并且新增skills这个function

app/Modesl/user

    public function skills()
    {
        return $this->hasMany(Skill::class);
    }

这边是建立使用者的skill方法
建立一对多的概念

3. 接者在skillcontroller 里面建立api

接者我们建立skillconteoller

php artisan make:controller SkillController --resource

SkillController.php

 public function index()
    {
        //
         $Skills = User::find(1)->skills;
         return response($Skills);

    }

我们可以使用这个api 来捞出该使用者(user_id1 是roni)所有的技能
我们先预设使用id是1来找roni所有的技能

4.修改route

我们新增skill的route

Route::resource('skills','SkillController');

5.在资料库多几笔资料

我们用api新增一笔admin资料
https://ithelp.ithome.com.tw/upload/images/20211002/20121052cW5TupXdFY.png

接者在skill表里面
新增
roni 会 微积分 跟物理 user_id都要设定1喔!!
admin会化学 user_id设定2

结果如下
https://ithelp.ithome.com.tw/upload/images/20211002/20121052VtEdVXmRX0.png

6.我们来捞roni的 资料吧

直接打api就可以发现我们只捞到
user_id是1
也就是roni的skill
https://ithelp.ithome.com.tw/upload/images/20211002/20121052iKlehkN0zP.png

总结

明天我们来补上
相反的关系对应
接者就开始制作前端介面吧!!


<<:  [Day 21] 2D批次渲染 (三) - Bug!一堆Bug

>>:  [ Day 16 ] React Hooks 中的 useEffect

【Day 20】ECS on Outposts 的限制

tags: 铁人赛 AWS Outposts ECS 参考资料 ECS on Outposts 限制...

D17/ 我要用的 View 没有支援 Compose 怎麽办? - AndroidView

今天大概会聊到的范围 Android View 前两天来回进出了公司楼下的 7-11 两三次,每次...

Day24 切版笔记-超通用横式版面

学过的内容没有实际在VS CODE上写过,很难不去忘记。 透过切版练习,逼自己每天都进步一点点,相...

Day22 - 前处理: 资料平衡&Label 调整

在 Day20 介绍资料集时有提到过五类情绪有资料不平衡的问题,为了处理资料不平衡的问题,我们会在 ...

Data layer testing (4)

上一篇示范了 Ktor mock engine 的设定和测试了如果出现 exception 时能否顺...