GitHub Copilot CURD 提高了效率但也存在问题
hi,我是温新,一名 PHPer
这篇文章使用 GitHub Copilot 进行 CURD,通过 CURD 来看看它怎么样。
GitHub Copilot CURD 体会
在这个 CURD 的案例中,我使用了 posts 进行简单的 CURD 测试。在测试过程中发现了如下几个问题:
1、使用 GitHub Copilot 需要对自己做的事了然于心且要表达出来(也就是告诉 GitHub Copilot 我要做什么);
2、对于简单页面 CURD ,它真的很高效;
3、GitHub Copilot 输出的并不是我们想要的。对于这个输出错乱的问题,处理不好可能就会把自己坑了;
4、要使用好 GitHub Copilot,我们还需要不断的学习。
不写一行代码使用 Post CURD
database\migrations\2023_04_02_062452_create_posts_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('posts');
}
};
routes\web.php
// posts resource
Route::resource('posts', \App\Http\Controllers\PostController::class);
app\Http\Controllers\PostController.php
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
class PostController extends Controller
{
// index
public function index()
{
// posts, 按时间倒序排列,每页 10 条数据,并在视图显示
$posts = Post::latest()->paginate(10);
return view('posts.index', compact('posts'));
}
// create
public function create(): View
{
return view('posts.create');
}
// store
public function store(Request $request)
{
return redirect()->route('posts.index');
}
// show
public function show(Post $post): View
{
return view('posts.show', compact('post'));
}
// 编辑 post
public function edit(Post $post)
{
return view('posts.edit', compact('post'));
}
// 更新文章
public function update(Request $request, Post $post): RedirectResponse
{
$post->update($request->all());
return redirect()->route('posts.show', $post);
}
// 删除文章
public function destroy(Post $post): RedirectResponse
{
$post->delete();
return redirect()->route('posts.index');
}
}
resources\views\posts\index.blade.php
<!-- 继承app模板 -->
@extends('app')
<!-- 填充 content 内容 -->
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">Posts</div>
<div class="card-body">
@foreach($posts as $post)
<div class="card mb-3">
<div class="card-header">
{{ $post->id }}
{{ $post->title }}
</div>
<div class="card-body">
<p class="card-text">{{ Str::limit($post->body, 50) }}</p>
<a href="{{ route('posts.show', ['post' => $post->id]) }}" class="btn btn-primary">Read More</a>
<a href="{{ route('posts.edit', ['post' => $post->id]) }}" class="btn btn-primary">Edit</a>
<form action="{{ route('posts.destroy', ['post' => $post->id]) }}" method="POST" style="display: inline;">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
<!-- 显示分页 -->
<div class="d-flex justify-content-center">
{{ $posts->links() }}
</div>
@endsection
其他的视图界面就不列表出来了,没有多大意义。
简单的页面使用 GitHub Copilot 完全可以实现一行代码都不写。对于复杂的业务现在未测试,暂不知晓情况。
请登录后再评论