با سلام. از وب سایت آموزش برنامه نویسی سورس باران در خدمت شما هستیم با مقاله ساخت دستورات سفارشی Artisan جهت خودکارسازی وظایف در لاراول. فریمورک لاراول دستورات زیادی را به منظور انجام کارهای مختلف دارد، اما هنگامی که برنامه تان رشد کرد و بزرگ شد، اجرای مکرر دستورات لاراول از قبیل ایجاد پایگاه داده، کار با داده ها و.. کار وقت گیر و خسته کننده ای خواهد شد.
ساخت دستورات سفارشی Artisan جهت خودکارسازی وظایف در لاراول
- آموزش نصب لاراول
- آموزش ایجاد دستورات (Command) در لاراول
- ساختار یک دستور درلاراول
- آموزش ثبت دستورات در لاراول
- انجام migrate و ساخت جدول در لاراول
- آموزش تنظیم پایگاه داده در لاراول
- آموزش اجرای دستور در لاراول
در این قسمت قصد داریم دستوری را ایجاد کنیم که با اجرای آن عمل ثبت داده در جدول محصولات به صورت اتوماتیک انجام شود. برخی از دستورات پیش فرض لاراول عبارتند از :
- php artisan serve
- php artisan make:controller
- php artisan make:model –m
- و …
در این مقاله قصد داریم یک دستور سفارشی Artisan برای ثبت داده های محصولات در پایگاه داده ایجاد کنیم. این مقاله نه تنها به شما یاد می دهد که چطور یک دستور سفارشی Artisan ایجاد کنید، بلکه قادر خواهید بود داده ها را از یک فایل csv خوانده، سپس آنها را تجزیه کرده و در نهایت توسط این دستور سفارشی که ایجاد خواهید کرد، آن را در پایگاه داده ذخیره کنید.
نصب لاراول
برای شروع، باید لاراول را نصب کنیم
1 |
composer create-project --prefer-dist laravel/laravel command |
دستور بالا یک پروژه لاراول به نام Command را ایجاد می کند.
ایجاد دستور در لاراول
در مرحله قبل لاراول را نصب کردیم، حال می خواهیم اولین دستور سفارشی artisan مان را ایجاد کنیم. برای اینکار دستور زیر را در ترمینال وارد کنید.
1 |
composer create-project --prefer-dist laravel/laravel command |
هدف ما ایجاد کردن یک دستور برای ثبت داده ها در جدول Product است، به همین دلیل نام دستور را productDate می گذاریم. بعد از اجرای دستور فوق، یک کلاس جدید در مسیر app -> console ->Command ایجاد خواهد شد.
فایل app -> console ->commands ->productDate باز کنید، محتوای این فایل مطابق زیر است که احتمالاً قبلاً با آن آشنا بوده اید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class productData extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'command:name'; /** * The console command description. * * @var string */ protected $description = 'Command description'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { // } } |
ساختار یک دستور در لاراول
حال کدهای زیر را برای ایجاد اولین دستور سفارشی در این فایل قرار دهید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php namespace App\Console\Commands; use App\Product; use Illuminate\Console\Command; class productData extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'add:product'; /** * The console command description. * * @var string */ protected $description = 'Add products data to the database'; public function __construct() { ... } public function handle() { // } } |
در کد بالا ما نام و امضای دستور به همراه یک توضیح مختصر درباره آن ایجاد کردیم. این آیتم ها هنگام نمایش دستور در لیست دستورات artisan ظاهر خواهد شد.
ثبت دستور در لاراول
کار ما تمام شد، اما این دستوری که ایجاد کردیم هیچ کاربردی ندارد، یعنی لاراول این دستور را نمی شناسد. در قدم بعد باید این دستوری که ایجاد کردیم را به لاراول معرفی کنیم. برای اینکار فایل app ->console ->kernel.php را باز کنید، و کلاس دستوری که ایجاد کردیم را به آرایه $Command اضافه کنید. در زیر نحوه انجام این کار را می بینید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\productData::class, ]; protected function schedule(Schedule $schedule) { ... } protected function commands() { ... } } |
حال با موفقیت دستوراتمان را به لاراول معرفی کردیم. برای اینکه مطمئن شویم دستوراتمان در لاراول ثبت شده یا نه، دستور زیر را در ترمینال وارد کنید:
1 |
php artisan list |
و همان طور که می بینید دستوری که ایجاد کردیم، در لیست دستورات artisan نمایش داده می شود.
به این ترتیب توانستیم اولین دستوراتمان را ایجاد و ثبت کنیم.
انجام migrate و ایجاد جدول
حال برای کاربردی کردن دستور ایجاد شده، قصد داریم یک مدل به همراه فایل migration برای جدول product ایجاد و سپس یک متد برای اجرای دستور ایجاد شده در کنسول تعریف می کنیم. برای ایجاد مدل به همراه فایل migration دستور زیر را در ترمینال بنویسید.
1 |
php artisan make:model Product -m |
دستور بالا دو فایل را برایمان ایجاد می کند. یکی در مسیر app -> product و دیگری database -> migration ->create_product_table.
و محتوای هر کدام را در زیر می بینید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
## app/Product.php ... class Product extends Model { protected $table = "products"; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'description', 'quantity' ]; } |
و
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php ... class CreateProductsTable extends Migration { public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('description'); $table->string('quantity'); $table->timestamps(); }); } public function down() { ... } } |
تنظیم پایگاه داده
فایل .env را باز کرده و قسمت مربوط به پایگاه داده را مطابق زیر تنظیم کنید. قسمت نام پایگاه داده و نام کاربری و … را مطابق با مشخصات پایگاه داده خودتان را تنظیم کنید.
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=Your-database-name DB_USERNAME=Your-database-username DB_PASSWORD=Your-database-password |
حال با اجرای دستور زیر جدول را در پایگاه داده ایجاد کنید.
1 |
php artisan migrate |
اجرای دستور
بعد از اینکه دستورمان را اجرا کنیم، متد handle در کلاس productDate فراخوانی می شود. سپس آن را ویرایش کنید و کدهای مربوط به منطق دستور ایجاد شده را به این متد اضافه کنید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php ... class productData extends Command { protected $signature = 'add:product'; protected $description = 'Add products data to the database'; public function __construct() { ... } /** * Execute the console command. * * @return mixed */ public function handle() { $CSVFile = public_path('products.csv'); if(!file_exists($CSVFile) || !is_readable($CSVFile)) return false; $header = null; $data = array(); if (($handle = fopen($CSVFile,'r')) !== false){ while (($row = fgetcsv($handle, 1000, ',')) !==false){ if (!$header) $header = $row; else $data[] = array_combine($header, $row); } fclose($handle); } $dataCount = count($data); for ($i = 0; $i < $dataCount; $i ++){ Product::firstOrCreate($data[$i]); } echo "Products data added successfully"."\n"; } } |
1 |
php artisan add:product |
بعد از اجرای دستور بالا باید پیامی تحت عنوان product data added successfully را دریافت کنید. به این ترتیب توانستیم اولین دستور سفارشی مان را با موفقیت طراحی و اجرا کنیم . ساخت دستورات سفارشی کاربردهای زیادی دارد، به عنوان مثال هنگام توسعه یک برنامه در لاراول برای قسمت های تکراری و وقت گیر یک دستور را ایجاد کنید. به این ترتیب هنگام توسعه یک برنامه در لاراول صرفه جویی زیادی در وقت و هزینه شما خواهد شد.
همان طور که در این مقاله دیدید توانستیم صرفاً با اجرای یک دستور، داده های یک فایل CSV را خوانده ودر پایگاه داده ذخیره کردیم. امیدوارم این آموزش برای شما مفید بوده باشد
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- انتشار: ۸ آبان ۱۳۹۷
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- رپورتاژ
- فروشگاه
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- Go
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس