iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
永豐金融APIs

釋放你的潛能用技能交易吧!系列 第 25

[Day25] 第二十五章-新增空白的point表單 (跨資料查詢還有對應細節)

前言

昨天我們完成了point簡單的read 跟route model controll等
今天我們在進入評分前有一件很重要的事情要先做
也就是說point表單
比如說roni 對 amdin使用者的化學技能評分前

我們需要先判斷是否有評分過!?

如果有評分過我們的api要改成patch也就是更新分數
如果沒有評分過! 那我們要新增一個point的紀錄表來記錄我們的評分

這些是非常重要喔
那要如何判斷呢
user_id(技能擁有者)
judge_user_id(評分者ID)
skill_id(技能ID)

也就是說我們要茶道第一個是技能擁有者是誰?然後技能是哪種?還有現在評分的人是誰?
這件事情在做對應是非常重要的一件事喔!
新手可能會被這這種邏輯搞到頭昏眼花
/images/emoticon/emoticon06.gif

目標

  1. 建立好前端ajax
  2. 建立好一張新的point表單

實作

在前端views/point/index.blade.php中

<head>
  <!-- Scripts -->
  <script src="{{ asset('js/app.js') }}" defer></script>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"> </script>
  <!-- Styles -->
  <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>

<body>
  <div>
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>ID</th>
          <th>標題</th>
          <th>使用者ID</th>
          <th>技能評分</th>
        </tr>
      </thead>
      <tbody>
        @foreach($skills as $skill )
        <tr>
          <td>{{$skill->id}}</td>
          <td>{{$skill->title}}</td>
          <td>{{$skill->user_id}}</td>
          <td><button type="button" class="btn btn-primary" onclick="myFunction('{{$skill->id}}','{{$skill->user_id}}')">進入評分</button></td>
        </tr>
        @endforeach
      </tbody>
    </table>
  </div>
</body>

<script>
  function myFunction(skill_id, user_id) {
    var data = {
      skill_id,
      user_id
    }
    $.ajax({
        method: "POST",
        url: "/points",
        dataType: 'json',
        data
      })
      .done(function(msg) {
        console.log(msg)
      });
  }
</script>

我們要把skill_id跟持有者id傳到後端在做表單控制

在button function中我們可以把兩個參數帶入
然後透過ajax把它送到後端

public function store(Request $request)
    {
        //
        $data  = $request->all();
        $user = Auth::user();
        $result = Point::query()
            ->where('user_id', '==', $data['user_id'])
            ->where('judge_user_id', '==', $user->id)
            ->where('skill_id', '==', $data['skill_id'])->get()->first();
        if (empty($result)) {
            $newpointdata = new Point;
            $newpointdata->user_id = $data['user_id'];
            $newpointdata->judge_user_id = $user->id;
            $newpointdata->skill_id = $data['skill_id'];
            $newpoint = $newpointdata->save();
            dd($newpoint);
            return $newpoint;
        }

        // return empty($result);
    }

這邊要做的事情有兩點
第一點我們要先查找是否已經有評分過了(也就是說我們要看評分表在不在)
如果不在我們就要進到if empty的環節來新增point表

驗證結果

https://ithelp.ithome.com.tw/upload/images/20211010/2012105204sGedAKhk.png
確認api有成功

https://ithelp.ithome.com.tw/upload/images/20211011/201210520NAqaxYOdG.png
確認評分表有新增成功


上一篇
[Day24] 第二十四章 - 建立point評分表 (複習前面的方法還有query builder)
下一篇
[Day26] 第二十六章-使用patch送出分數並且修改前端edit.blade.php
系列文
釋放你的潛能用技能交易吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言