تیم لاراول هر شش ماه یک بار، اقدام به ارائه یک نسخه جدید میکنند. در زمان نگارش این مطلب، آخرین نسخه، لاراول 8 نام دارد که قبلاً در ۸ سپتامبر ۲۰۲۰ میلادی ارائه شده است. در این آموزش، نحوه ساخت یک اپلیکیشن CRUD را با لاراول 8 برای ایجاد، وارد کردن، بروزرسانی و حذف محصولات در یک پایگاه داده MySQL...
1400/02/012332 بازدید
تیم لاراول هر شش ماه یک بار، اقدام به ارائه یک نسخه جدید میکنند. در زمان نگارش این مطلب، آخرین نسخه، لاراول 8 نام دارد که قبلاً در ۸ سپتامبر ۲۰۲۰ میلادی ارائه شده است. در این آموزش، نحوه ساخت یک اپلیکیشن CRUD را با لاراول 8 برای ایجاد، وارد کردن، بروزرسانی و حذف محصولات در یک پایگاه داده MySQL فراخواهیم گرفت.
لاراول 8
لاراول (Laravel) یکی از محبوبترین فریمورکهای مبتنی بر PHP برای ساخت اپلیکیشنهای دیتابیس-محور است. لاراول بر اساس الگوی MVC توسعه داده شده و میتواند به راحتی برای ساخت اپلیکیشنها و اجرای عملیات ایجاد، بازیابی، بروزرسانی و حذف موسوم به CRUD بر روی یک پایگاه داده مورد استفاده قرار گیرد.
لاراول دارای جامعه گستردهای از توسعهدهندگان است که توانستهاند تاکنون بستههای زیادی برای مسائل رایج توسعه وب ارائه کنند. بنابراین، توسعه دهندگان در بسیاری از موارد، نیازی به انجام کارهای اولیه نخواهند داشت.
پیشنیازهای لاراول 8
برای پیش بردن مراحل این آموزش نیاز است که موارد زیر را در اختیار داشته باشید.
نصب PHP و MySQL در سیستم توسعهدهنده
کمپوزر
گام ۱) نصب لاراول 8
با نصب لاراول 8 از طریق کمپوزر شروع میکنیم. یک رابط خط فرمان باز کنید و فرمان زیر را در آن اجرا نمایید.
لاراول 8 دارای برخی عملکردهای جدید است. به عنوان مثال، نیازی به کپیکردن و تغییر نام فایل env.example نخواهیم و خودِ لاراول این کار را برایمان انجام میدهد. همچنین تولید APP_KEY به صورت اتوماتیک صورت میگیرد.
صبر کنید تا کمپوزر سایر متعلقات را نصب کند. سپس پروژه خود را تنظیم کنید و برای مرحله بعد آماده شوید.
گام ۲) آمادهسازی یک پایگاه داده MySQL
حالا نوبت ساخت یک پایگاه داده MySQL برای ذخیرهسازی دادههای اپلیکیشن لاراول است. در ترمینال، فرمان زیر را تایپ کنید تا کلاینت mysql اجرا شود.
php
1$ mysql -u root -p
زمانی که از شما درخواست شد، پسورد نصب سرور MySQL را وارد کنید.
سپس عبارت SQL زیر را اجرا کنید تا یک پایگاه db برایتان ساخته شود.
php
1mysql> create database db;
فایل .env را باز کنید و مجوّزهای لازم را برای دسترسی به پایگاه داده MySQL تغییر دهید.
در اینجا باید نام پایگاه داده، نام کاربری و کلمه عبور را تنظیم کنید.
در این مقطع، میتوانید با اجرای فرمان migrate، پایگاه داده و یک سری جداول SQL موردنیاز لاراول را بسازید.
php
1$ php artisan migrate
نکته: در هر کدام از مقاطع دیگر توسعه نیز میتوانید فرمان migrate را برای اضافهکردن جداول دیگر SQL اجرا کنید. بنابراین امکان انجام تغییرات در این زمینه برایتان وجود خواهد داشت.
گام ۳) ایجاد یک Database Migration
ما در حال ساخت یک اپلیکیشن CRUD با لاراول 8 برای یک سری محصولات هستیم. بنابراین نیاز به ایجاد جدول SQL متناظر با آنها در پایگاه داده با استفاده از یک migration خواهیم داشت.
بر این اساس، به ترمینال برگشته و فرمانهای زیر را اجرا کنید.
php
1$ cd laravel8app23$ php artisan make:migration create_products_table --create=products
در نتیجه یک فایل migration درون فولدر database/migrations ایجاد خواهد شد. در ادامه، باید فیلدهای موردنیاز را در جدول پایگاه داده وارد کنیم. هر کدام از محصولات دارای یک عنوان، توضیح، قیمت، تاریخ تولید و زمان بروزرسانی است.
برای این منظور، فایل 2020_09_12_222716_create_products_table.php را که حاوی کلاس migration است باز کنید و آن را به صورت زیر بروزرسانی کنید.
php
1<?php23use Illuminate\Database\Migrations\Migration;45use Illuminate\Database\Schema\Blueprint;67use Illuminate\Support\Facades\Schema;89class CreateProductsTable extends Migration1011{1213/**1415* Run the migrations.1617*1819* @return void2021*/2223public function up()2425{2627Schema::create('products', function (Blueprint $table) {2829$table->id();3031$table->string('name', 255)->nullable();3233$table->string('description', 500)->nullable();3435$table->decimal('price', 22)->nullable()->default(0.00);3637$table->timestamp('created_at')->useCurrent();3839$table->timestamp('updated_at')->nullable();4041});4243}4445/**4647* Reverse the migrations.4849*5051* @return void5253*/5455public function down()5657{5859Schema::dropIfExists('products');6061}6263}
برای جلوگیری از پیغامهای خطا، باید ابتدا طول پیشفرض رشتهها را تنظیم کنید. برای این منظور، فایل app/Providers/AppServiceProvider.php را باز کرده و آیتم Schema::defaultstringLength(191) را مطابق زیر اضافه کنید.
php
1<?php23namespace App\Providers;45use Illuminate\Support\ServiceProvider;67use Illuminate\Support\Facades\Schema;89class AppServiceProvider extends ServiceProvider1011{1213/**1415* Register any application services.1617*1819* @return void2021*/2223public function register()2425{2627//2829}3031/**3233* Bootstrap any application services.3435*3637* @return void3839*/4041public function boot()4243{4445Schema::defaultStringLength(191);4647}4849}
سپس دوباره به ترمینال برگردید و فرمان زیر را اجرا کنید.
php
1$ php artisan migrate
در نتیجه، فیلدها به جدول پایگاه داده ما اضافه میشوند.
گام ۴) اضافهکردن مسیر منبع
در این مرحله باید مسیرهای موردنیاز برای عملیات CRUD را اضافه کنیم. برای این منظور، فایل routes\web.php را باز کنید و مسیر منبع را مطابق زیر وارد نمایید.
php
1<?php23use Illuminate\Support\Facades\Route;45use App\Http\Controllers\ProductController;67Route::get('/', function () {89return view('welcome');1011});1213Route::resource('products', ProductController::class);
گام ۵) اضافهکردن کنترلر و مدل لاراول 8
با کمک فرمان زیر، مدل و کنترلر لاراول را ایجاد میکنیم:
در اینجا، از شما خواسته میشود که در صورت تمایل، مدل محصول را بسازید؛ چرا که در حال حاضر این مدل وجود ندارد. برای تأیید این موضوع، کلمه yes را تایپ کنید.
سپس فایل app/Http/Controllers/ProductController.php را باز کرده و آن را مطابق زیر بروزرسانی کنید.
php
1<?php23namespace App\Http\Controllers;45use App\Models\Product;67use Illuminate\Http\Request;89class ProductController extends Controller1011{1213/**1415* Display a listing of the resource.1617*1819* @return \Illuminate\Http\Response2021*/2223public function index()2425{2627$products = Product::latest()->paginate(5);2829return view('products.index', compact('products'))3031->with('i', (request()->input('page', 1) - 1) * 5);3233}3435/**3637* Show the form for creating a new resource.3839*4041* @return \Illuminate\Http\Response4243*/4445public function create()4647{4849return view('products.create');5051}5253/**5455* Store a newly created resource in storage.5657*5859* @param \Illuminate\Http\Request $request6061* @return \Illuminate\Http\Response6263*/6465public function store(Request $request)6667{6869$request->validate([7071'name' => 'required',7273'description' => 'required',7475'price' => 'required'7677]);7879Product::create($request->all());8081return redirect()->route('products.index')8283->with('success', 'Product created successfully.');8485}8687/**8889* Display the specified resource.9091*9293* @param \App\Models\Product $product9495* @return \Illuminate\Http\Response9697*/9899public function show(Product $product)100101{102103return view('products.show', compact('product'));104105}106107/**108109* Show the form for editing the specified resource.110111*112113* @param \App\Models\Product $product114115* @return \Illuminate\Http\Response116117*/118119public function edit(Product $product)120121{122123return view('products.edit', compact('product'));124125}126127/**128129* Update the specified resource in storage.130131*132133* @param \Illuminate\Http\Request $request134135* @param \App\Models\product $product136137* @return \Illuminate\Http\Response138139*/140141public function update(Request $request, Product $product)142143{144145$request->validate([146147'name' => 'required',148149'description' => 'required',150151'price' => 'required'152153]);154155$product->update($request->all());156157return redirect()->route('products.index')158159->with('success', 'Product updated successfully');160161}162163/**164165* Remove the specified resource from storage.166167*168169* @param \App\Models\Product $product170171* @return \Illuminate\Http\Response172173*/174175public function destroy(Product $product)176177{178179$product->delete();180181return redirect()->route('products.index')182183->with('success', 'Product deleted successfully');184185}186187}
لاراول 8 از فولدر Models برای ذخیرهسازی فایلهای مدل استفاده خواهد کرد.
حالا فایل app/Models/Product.php را باز کنید. در اینجا باید توابع و fillable را به صورت زیر اضافه کنید. fillable ها فیلدهایی در پایگاه داده هستند که کاربر میتواند آنها را پُر کند.
لاراول از سیستم قالببندی blade برای ویوها استفاده میکند. بر این اساس، درون فولدر resources/views، دو فولدر Layouts و Products را ایجاد کنید.
اکنون محتوای فایل Layouts/App.blade.php را به صورت زیر بروزرسانی کنید.
به این ترتیب، کار راهاندازی اپلیکیشن Laravel 8 CRUD ما به پایان میرسد. در این حالت، میتوانید این اپلیکیشن را با استفاده از فرمان زیر به کار بگیرید.:
php
1$ php artisan serve
همچنین میتوانید از آدرس http://127.0.0.1:8000 به اپلیکیشن خود دسترسی پیدا کنید.