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ụ

Tạo bảng cơ sở dữ liệu với di chuyển

Laravel 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ạn

Mô 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 CRUD

php 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ẩm

Tí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ồi

Tà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');
    }
}
0

Tạo APIPaginateCollection cho Tài nguyên phân trang API

Tạ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');
    }
}
2

APIPaginateCollection 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 API

Trong 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ẫu

Danh 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ận

Sau 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