昨天我们完成了point简单的read 跟route model controll等
今天我们在进入评分前有一件很重要的事情要先做
也就是说point表单
比如说roni 对 amdin使用者的化学技能评分前
我们需要先判断是否有评分过!?
如果有评分过我们的api要改成patch也就是更新分数
如果没有评分过! 那我们要新增一个point的纪录表来记录我们的评分
这些是非常重要喔
那要如何判断呢
user_id(技能拥有者)
judge_user_id(评分者ID)
skill_id(技能ID)
也就是说我们要茶道第一个是技能拥有者是谁?然後技能是哪种?还有现在评分的人是谁?
这件事情在做对应是非常重要的一件事喔!
新手可能会被这这种逻辑搞到头昏眼花
在前端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表
验证结果
确认api有成功
确认评分表有新增成功
<<: DAY 27:Chain of Responsibility,将实作透过串串乐串起来
>>: Day27:【技术篇】Webpack5 - Webpack 之运作流程
连结即使是很重要的事,但似乎大部份的人只关心外站的反向连结,而却忽略内部的正向连结,事实上内部连结才...
想在这纪录一下我使用STM32CubeMX的经验适合完全没用过的人,已经有开发经验的就不用看了,我第...
来聊聊rebase rebase本身就是两个字组成,「re+base」 实际在做的时候,我们大概可以...
学完Get请求後就不免要学一下Post请求了,在DAY15: HTTP GET请求的开头有提到,Ge...
昨天 Day 12 介绍了 Sinopac PHP SDK 关於建立订单的部分,接着今天要介绍的是查...