laravel

آرشیو اول : دستورات و نکات مهم لاراول

همانطور که در اولین مطلب وبلاگم اشاره کردم بسیاری از مطالبی که در وبلاگم منتشر میکنم برای آرشیو کردن آن ها برای خودم است و امیدوارم  برای  برخی از دوستان هم کاربرد داشته باشه.

( لاراول ۵.۴ )

در این مطلب در رابطه با مواردی که در لاراول لازم میشه اشاره میکنم :

۱- ایجاد ارتباط بین فیلدهای جداول دیتابیس در migration :

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

پس در migration مربوط به مقالات که نام مقاله و slug ، …. وجود داره یک فیلد به نام user_id وجود داره که به فیلد id موجود در جدول users اشاره میکنه. ( جدول users مشخصات کاربران را ذخیره میکند )

پس داخل فایل migration مربوط به مقالات به این صورت می نویسیم :

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');

۲ –  گروه بندی مسیریابی Rout در فایل web.php

همانطور که میدونید برای اینکه مثلا لیست مقالات مربوط به وبسایت رو نمایش بدیم باید در فایل web.php که در فولدر rout است مسیردهی مورد نظر و کنترلر و تابع اون رو مشخص کنیم، برای مثال اگر قرار باشه با مسیر mekaeil.me/admin/articles لیست تمام مقالات را نمایش دهیم مسیردهی در فایل web.php به صورت زیر خواهد بود :

Route::get('/admin/articles', 'Admin\[email protected]')->name('admin.article.list');

که در اینجا با فراخوانی آدرس /admin/articles بعد از نام دامنه، کنترلر ArticlesController که در مسیر Http > Controllers > Admin > ArticlesController وجود دارد فراخوانی میشود و تابع list موجود در این فایل مدیریت نمایش لیست مقالات و ارسال اطلاعات به view را انجام خواهد داد.

نکته اینجاست که ما اگر کلی مسیردهی داشته باشیم برای آدرس های مختلف باید به تعداد آنها مسیریابی را داخل فایل web.php ایجاد کنیم، برای راحتی کار و خلاصه شدن کار میتوانیم از حالت گروه بندی استفاده کنیم به صورت زیر :

Route::namespace('Admin')->prefix('admin')->group(function(){

$this->get('/articles', [email protected]')->name('admin.article.list');

// Another rout here ...
});

۳ – ایجاد کنترلرها و متدهای مربوط به آن ( CRUD )

هنگام ایجاد اپلیکیشن ها و برنامه ها، متدهای Create , Read, Update, Delete , Store  در کنترلرهای مربوط به مدیریت برنامه استفاده میشود، برای ایجاد کنترلر و متدهای مربوط به آن، بعد از اینکه مدل مورد نظر را ایجاد کردیم میتوانیم با استفاده از دستور زیر به صورت Resource کنترلر موردنظر را ایجاد کنیم در حالتی که شامل متدهای مورد نظر هستند‌:

php artisan make:controller PhotoController -r

CRUD

در حالت فوق متدهای show , edit و … مقداری به نام $id را به عنوان ورودی متد دریافت میکنند تا عملیات مورد نظر انجام شود :‌

Rout model binding in laravel

حالا با تغییر دستور ترمینال به صورت زیر، میتوان با استفاده از rout model binding دسترسی و ارتباط میان کنترلرها و مدلها را برقرار کرد :

 php artisan make:controller ArticleController -r --model=Article

۴ –  insert داده های اولیه ( پیشفرض ) به جداول دیتابیس

من برای پروژه ای که داشتم باید هنگام راه اندازی پروژه یکسری داده ها به صورت پیشفرض به جداول دیتابیس اضافه میشد تا بتوانن هنگام برنامه نویسی هم از آنها استفاده کرد. برای مثال دسته بندی به نام “پیشفرض” به جداول دسته بندی ها اضافه کردم تا وقتی اگر یک مقاله ای آپلود و منتشر شد در صورتیکه دسته بندیی وجود نداشت و یا انتخاب نشد به صورت اتوماتیک این دسته بندی انتخاب شود و یا اگر یک دسته بندی حذف شد، تمام مقالات مربوط به آن دسته بندی به جای حذف به آن دسته بندی نسبت داده شوند.

برای ایجاد این داده های پیشفرض، من داخل فایل migration مربوط به جدول مورد نظر داده ها را اضافه کردم به صورت زیر :

    public function up()
    {
        Schema::create('articlecats', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('slug')->nullable();
            $table->timestamps();
        });

        // Insert Default Data
        DB::table('articlecats')->insert(
            array(
                'id'            => '1',
                'name'      => 'پیشفرض',
                'slug'          => 'default',
                'created_at'    => '1991-07-14',
                'updated_at'    => '1991-07-14'
            )
        );    
    }

۵ – افزودن کاربر به دیتابیس به صورت دستی

گاهی وقت ها هنگام ایجاد پروژه در بخش هایی که هنوز به بخش سطوح دسترسی و احزارهویت کاربران نرسیدیم و لازم است یکسری دیتا را ایجاد کنیم، برای ایجاد این دیتاها از سمت برنامه باید کاربر لاگین کرده باشد و برای لاگین بودن کاربر باید کاربری وجود داشته باشد! پس به صورت دستی یا از سمت phpmyadmin کاربری را ایجاد میکنیم و یا با استفاده از کدنویسی و قراردادن در یکی از فانکشن های کنترلر کاربر را ایجاد میکنیم و سپس کد را حذف میکنیم، که من شخصا راه دوم رو با استفاده از کد زیر انجام میدم.

return User::create([
'name' => 'Mekaeil Andisheh',
'level' => 'admin',
'email'=> [email protected]',
'password'  => bcrypt('123456')
 ]);  

 

پاسخ دهید

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