برنامه نویسی

ایجاد یک برنامه Crud Laravel با الگوی مخزن

Laravel یک چارچوب قدرتمند PHP است که توسعه برنامه وب را ساده می کند. هنگام ساختن یک برنامه CRUD (ایجاد ، خواندن ، به روزرسانی ، حذف) ، با استفاده از الگوی مخزن می تواند کد شما را تمیز تر ، قابل حفظ تر و آزمایش آسان تر کند. در این وبلاگ ، ما شما را از طریق راه اندازی یک پروژه Laravel با الگوی مخزن برای یک عملیات CRUD راهنمایی خواهیم کرد.

laravel-crud-repository/
│── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── ProductController.php
│   ├── Models/
│   │   ├── Product.php
│   ├── Providers/
│   │   ├── RepositoryServiceProvider.php
│   ├── Repositories/
│   │   ├── Interfaces/
│   │   │   ├── ProductRepositoryInterface.php
│   │   ├── Eloquent/
│   │   │   ├── ProductRepository.php
│── database/
│   ├── migrations/
│   │   ├── xxxx_xx_xx_create_products_table.php
│── routes/
│   ├── api.php
│── .env
│── composer.json
│── artisan

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر هنوز لاراول را نصب نکرده اید ، دستور زیر را برای ایجاد یک پروژه جدید Laravel اجرا کنید:

composer create-project laravel/laravel laravel-crud-repository
cd laravel-crud-repository
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خود را به روز کنید .env پرونده با اعتبار پایگاه داده خود:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crud_repository
DB_USERNAME=root
DB_PASSWORD=
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای تنظیم پایگاه داده ، مهاجرت را اجرا کنید:

php artisan migrate
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مانند محصول ، یک مدل با مهاجرت برای یک موجودیت نمونه تولید کنید:

php artisan make:model Product -m
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پرونده مهاجرت را در database/migrations/xxxx_xx_xx_xxxxxx_create_products_table.php:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description')->nullable();
        $table->decimal('price', 8, 2);
        $table->timestamps();
    });
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مهاجرت را اجرا کنید:

php artisan migrate
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

1. رابط را در پوشه رابط ایجاد کنید

یک پوشه جدید ایجاد کنید app/Repositories/Interfaces/ و سپس ProductRepositoryInterface.php پرونده:

namespace App\Repositories\Interfaces;

interface ProductRepositoryInterface
{
    public function getAll();
    public function getById($id);
    public function create(array $data);
    public function update($id, array $data);
    public function delete($id);
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ایجاد Eloquent پوشه داخل Repositories/ و ایجاد ProductRepository.php:

namespace App\Repositories\Eloquent;

use App\Models\Product;
use App\Repositories\Interfaces\ProductRepositoryInterface;

class ProductRepository implements ProductRepositoryInterface
{
    public function getAll()
    {
        return Product::all();
    }

    public function getById($id)
    {
        return Product::findOrFail($id);
    }

    public function create(array $data)
    {
        return Product::create($data);
    }

    public function update($id, array $data)
    {
        $product = Product::findOrFail($id);
        $product->update($data);
        return $product;
    }

    public function delete($id)
    {
        return Product::destroy($id);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اجرا:

php artisan make:provider RepositoryServiceProvider
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تغییر دادن app/Providers/RepositoryServiceProvider.php:

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Repositories\Interfaces\ProductRepositoryInterface;
use App\Repositories\Eloquent\ProductRepository;

class RepositoryServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->bind(ProductRepositoryInterface::class, ProductRepository::class);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ارائه دهنده را در ثبت نام کنید config/app.php:

App\Providers\RepositoryServiceProvider::class,
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 5: یک کنترلر ایجاد کنید و مخزن را تزریق کنید

تغییر دادن app/Http/Controllers/ProductController.php:

namespace App\Http\Controllers;

use App\Repositories\Interfaces\ProductRepositoryInterface;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    protected $productRepository;

    public function __construct(ProductRepositoryInterface $productRepository)
    {
        $this->productRepository = $productRepository;
    }

    public function index()
    {
        return response()->json($this->productRepository->getAll());
    }

    public function store(Request $request)
    {
        $data = $request->validate([
            'name' => 'required|string|max:255',
            'description' => 'nullable|string',
            'price' => 'required|numeric',
        ]);

        return response()->json($this->productRepository->create($data));
    }

    public function show($id)
    {
        return response()->json($this->productRepository->getById($id));
    }

    public function update(Request $request, $id)
    {
        $data = $request->validate([
            'name' => 'sometimes|string|max:255',
            'description' => 'nullable|string',
            'price' => 'sometimes|numeric',
        ]);

        return response()->json($this->productRepository->update($id, $data));
    }

    public function destroy($id)
    {
        return response()->json(['deleted' => $this->productRepository->delete($id)]);
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله ششم: مسیرهای API را تعریف کنید

تغییر دادن routes/api.php:

use App\Http\Controllers\ProductController;

Route::apiResource('products', ProductController::class);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 7: API را آزمایش کنید

سرور توسعه Laravel را اجرا کنید:

php artisan serve
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

آزمون با استفاده از پستچی یا فر:

همه محصولات را دریافت کنید:

curl -X GET http://127.0.0.1:8000/api/products
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک محصول ایجاد کنید:

curl -X POST -H "Content-Type: application/json" \
  -d '{"name": "Laptop", "description": "A gaming laptop", "price": 1500}' \
  http://127.0.0.1:8000/api/products
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

با سازماندهی مخازن به صورت جداگانه Interfaces وت Eloquent پوشه ها ، این رویکرد باعث می شود پروژه لاراول شما مقیاس پذیر و ساختار یافته تر شود. این الگوی مخزن ، اتصال سست را تضمین می کند و باعث می شود در آینده به یک منبع داده دیگر تغییر دهید.

اکنون شما یک پروژه Laravel را به دنبال الگوی مخزن برای عملیات CRUD دارید! 🚀 اگر سوالی دارید به من اطلاع دهید!

سبد خرید من را در اینجا بررسی کنید
جتون سوترادا

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا