Làm cách nào để cập nhật và xóa tài nguyên trong ứng dụng Laravel CRUD?
Tôi là nhà thiết kế và phát triển web đến từ Trinidad & Tobago, có bằng Kỹ sư cơ khí. Tôi yêu khía cạnh logic của web và thực tâm tôi là một nghệ sĩ/họa sĩ. Tôi tán thành các kỹ thuật web tiến bộ và cố gắng học điều gì đó mỗi ngày. Tôi cố gắng truyền đạt kiến thức của mình nhiều nhất có thể trên blog cá nhân của mình, callmenick. com. Tôi yêu thích ẩm thực, tôi lướt sóng vào mỗi cuối tuần và tôi có một mối quan hệ hợp tác sáng tạo tuyệt vời với người bạn chuyên làm trò nghịch ngợm Elena. Cùng nhau, chúng ta chạy SAYSM
Tìm hiểu cách tạo API CRUD trong Laravel bằng cách làm theo các bước trong hướng dẫn này. Những ví dụ này sử dụng cơ sở dữ liệu MySQL và Laravel. Để tạo API CRUD rất đơn giản, chúng tôi sẽ bắt đầu với cơ sở dữ liệu và di chuyển sang cơ sở dữ liệu đó. Sau đó, chúng ta sẽ xem qua mã cho các tệp điều khiển và định tuyến, cũng như một số điểm cuối ví dụ Show Tạo bảng cơ sở dữ liệu với di chuyểnLaravel cung cấp một tính năng di chuyển cho phép bạn tạo các bảng cơ sở dữ liệu bằng cách sử dụng tệp di chuyển để tạo các tệp di chuyển chỉ cần gõ php artisan make:migration create_products_table
Lệnh trên sẽ tạo một tệp di chuyển trong thư mục cơ sở dữ liệu/di chuyển, tên tệp sẽ là {{dấu thời gian}}_create_products_table Sau đó, hãy mở tệp di chuyển đó trong cơ sở dữ liệu/di chuyển/{{dấu thời gian}}_create_products_table và bạn có thể viết logic di chuyển tại đây. Hàm phương thức up là nơi bạn viết logic để tạo bảng cơ sở dữ liệu. Hàm phương thức down là nơi bạn viết logic để xóa bảng cơ sở dữ liệu về cơ bản nó chỉ là đảo ngược của việc di chuyển Sau đó, chuyển đến cơ sở dữ liệu/di chuyển/{{dấu thời gian}}_create_products_table. php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
Để tạo bảng chạy lệnh bên dưới. Lệnh dưới đây sẽ chạy qua tất cả các tệp di chuyển và tạo các bảng mới dựa trên logic mà bạn viết trong phương thức up() của hàm công khai php artisan migrate
Tạo Mô hình sản phẩm cho bảng của bạnMô hình được liên kết với bảng của bạn, hãy nhớ một mô hình thuộc về một bảng. Bạn có thể xem mô hình như một đối tượng bảng cơ sở dữ liệu nơi bạn có thể tạo, sửa đổi và xóa các bản ghi cơ sở dữ liệu chỉ bằng cách gọi mô hình. php artisan make:model Product Sau đó, bạn sẽ thấy Sản phẩm. php, mô hình Laravel tự động sử dụng tên mô hình để xác định bảng mà nó liên kết nhưng để tránh bất kỳ sự cố nào, trước tiên bạn cần định cấu hình tên bảng trong mô hình và các trường của mô hình trong các biến mảng có thể điền. Vui lòng xem ví dụ bên dưới Trong ứng dụng/Mô hình/Sản phẩm. php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
protected $fillable = ["name", "price"];
}
Tạo ProductController CRUDphp artisan make:controller ProductController --api
Sau khi gõ lệnh trên với –api bạn sẽ thấy ProductController trong app/Http/Controllers/ProductController. php với chức năng mặc định của chỉ mục được sử dụng cho danh sách, lưu trữ sử dụng để tạo, hiển thị sử dụng để hiển thị chi tiết, cập nhật sử dụng để cập nhật bản ghi theo id và hủy để xóa bản ghi dữ liệu. Trong ví dụ bên dưới, bạn sẽ thấy logic mẫu cho CRUD. Lưu ý rằng chúng tôi vẫn cần tạo tài nguyên và yêu cầu chuyển đổi phản hồi cộng với xác thực Trong ứng dụng/Http/Bộ điều khiển/ProductController. php
namespace App\Http\Controllers;
use App\Http\Requests\ProductRequest;
use App\Http\Resources\APIPaginateCollection;
use App\Http\Resources\ProductResource;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$perPage = $request->per_page ? $request->per_page : 10;
$currentPage = $request->current_page ? $request->current_page : 1;
$products = Product::paginate($perPage, ["*"], "page", $currentPage);
$response = new APIPaginateCollection($products, ProductResource::class);
return response()->json($response);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(ProductRequest $request)
{
Product::create($request->only("name", "price"));
return response()->json(["data" => [
"success" => true
]]);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/public function show($id)
{
$product = Product::findOrFail($id);
$response = new ProductResource($product);
return response()->json(["data" => $response]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(ProductRequest $request, $id)
{
$product = Product::findOrFail($id);
$product->update($request->only("name", "price"));
return response()->json(["data" => [
"success" => true
]]);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
Product::findOrFail($id)->delete();
return response()->json(["data" => [
"success" => true
]]);
}
}
Tạo ProductRequest để xác thực sản phẩmTính năng yêu cầu của Laravel cho phép chúng tôi xử lý logic xác thực phụ trợ cũng như ủy quyền, bây giờ chúng tôi sẽ sử dụng ProductRequest làm mẫu để xác thực dữ liệu sản phẩm. Để tạo một yêu cầu trong Laravel, chỉ cần gõ lệnh bên dưới php artisan make:request ProductRequest
Bây giờ bạn sẽ thấy ProductRequest. php trong ứng dụng/Http/Yêu cầu/ProductRequest. php và thay đổi chức năng công khai ủy quyền () từ trả về sai thành trả về đúng (chúng tôi không quan tâm đến việc ủy quyền). Để xác thực, hãy viết bất kỳ logic xác thực nào trong hàm quy tắc công khai (), hàm quy tắc () sẽ trả về một mảng xác thực. Điều kiện if sẽ kiểm tra bản cập nhật API vì tên sản phẩm là duy nhất trong bản ghi cơ sở dữ liệu, vì vậy khi cập nhật, chúng ta cần bỏ qua khóa chính 'id' của nó để xử lý bản cập nhật có cùng tên. Xem ví dụ bên dưới Trong ứng dụng/Http/Yêu cầu/ProductRequest. php ________số 8_______Tạo ProductResource cho dữ liệu phản hồiTài nguyên trong Laravel được sử dụng để chuyển đổi dữ liệu phản hồi Laravel cung cấp tính linh hoạt vì với tài nguyên Laravel, bạn có thể chuyển đổi dữ liệu lồng nhau dễ dàng hơn với tài nguyên Laravel, ngoài ra, bạn có thể lấy dữ liệu quan hệ liên kết bằng cách chỉ vào mối quan hệ đã được tạo trong mô hình và chuyển đổi . Tính linh hoạt này cho phép chúng tôi viết ít mã hơn trong bộ điều khiển Để tạo tài nguyên, chỉ cần gõ lệnh bên dưới php artisan make:resource ProductResource
Bây giờ, hãy truy cập ứng dụng/Http/Tài nguyên/ProductResource ProductResource. php là nơi thực hiện lệnh. tạo tài nguyên. Bạn có thể thấy trong ProductController của chúng tôi rằng chúng tôi đã gọi ProductResource trong chỉ mục và hiển thị chức năng bằng cách chuyển phiên bản mô hình tới tài nguyên. Để chuyển đổi bất kỳ phản hồi nào, hãy xem ví dụ bên dưới Trong ứng dụng/Http/Tài nguyên/ProductResource. php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
0Tạo APIPaginateCollection cho Tài nguyên phân trang APITạo tài nguyên bộ sưu tập APIPaginateCollection bằng cách gõ lệnh
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
1–collection sẽ nói với Laravel rằng họ cần tạo một resource collection. Một bộ sưu tập tài nguyên là một bộ sưu tập biến đổi một tài nguyên khác và nó mở rộng từ lớp ResourceCollection. Xem triển khai ví dụ đầy đủ bên dưới Trong APIPaginateCollection của bạn. php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
2APIPaginateCollection chấp nhận hai hàm tạo. Đầu tiên, bản thân model instance của Laravel paginate Model. phân trang(). Thứ hai, lớp tài nguyên mà APIPaginateCollection sử dụng để chuyển đổi từng bộ sưu tập Lộ trình APITrong các tuyến đường/api. php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('products');
}
}
3điểm cuối mẫuDanh sách http. //127. 0. 0. 1. 8000/api/sản phẩm (PHƯƠNG PHÁP NHẬN) Tạo nên http. //127. 0. 0. 1. 8000/api/sản phẩm (PHƯƠNG PHÁP ĐĂNG) Trình diễn http. //127. 0. 0. 1. 8000/api/product/3 (PHƯƠNG PHÁP NHẬN) Cập nhật http. //127. 0. 0. 1. 8000/api/product/3 (PHƯƠNG PHÁP PUT) Xóa bỏ http. //127. 0. 0. 1. 8000/api/product/3 (PHƯƠNG PHÁP XÓA) Phần kết luậnSau khi xem qua nội dung ở trên, bạn sẽ hiểu rõ về bộ API CRUD hoàn chỉnh bao gồm xác thực với yêu cầu, chuyển đổi dữ liệu phản hồi với tài nguyên và tùy chỉnh phân trang với bộ sưu tập tài nguyên Làm cách nào để xóa và cập nhật dữ liệu trong Laravel?getuserData() – Lấy tất cả các bản ghi từ bảng người dùng và trả lại. Nếu $id khác 0 thì chọn ghi theo id insertData() – Từ chức năng này chèn một bản ghi mới. Kiểm tra tên người dùng tồn tại hay không trong bảng người dùng. . updateData() – Từ chức năng này, bản ghi cập nhật. . deleteData() – Từ chức năng này xóa bản ghi Làm cách nào để chỉnh sửa và xóa trong Laravel?Trong hướng dẫn này, tôi chỉ cho bạn cách chọn, chèn, cập nhật và xóa bản ghi khỏi cơ sở dữ liệu MySQL với Laravel 7. . Tạo một bảng. Tạo một chủ đề bảng bằng cách sử dụng di chuyển. . Mô hình. Tạo mô hình đối tượng. . Tuyến đường. Mở tuyến/web. . Bộ điều khiển. . Khung nhìn. . đầu ra. . Phần kết luận Làm cách nào để thực hiện các thao tác CRUD trong Laravel?1 Các bước để thực hiện thao tác CRUD trong Laravel 8. . 1. 1 Bước 1. Cài đặt Laravel 8 1. 2 Bước 2. Cấu hình cơ sở dữ liệu 1. 3 Bước 3. Tạo một bảng 1. 4 Bước 4. Thêm tuyến tài nguyên 1. 5 Bước 5. Thêm bộ điều khiển và mô hình 1. 6 Bước 6. Thêm tập tin Blade 1. 7 Bước 7. Chạy ứng dụng CRUD |