Migrasi atau Berbagi Project Laravel

Ketika kalian membuat project Laravel tidak lagi sendirian, sedang kalian berbagi menggunakan git. Kemudian pada saat kalian meng-cloning project tersebut, kalian tidak bisa langsung menggunakannya, terjadi galat di sana-sini, yang dapat memusingkan, sedang pada saat itu kalian adalag orang yang baru pertama kali mengerjakan project Laravel secara bersama-sama. Berikut ini sedikit tips dari saya tentang bagaimana mengatasi hal tersebut.

Seperti yang telah kita ketahui bahwa Laravel menggunakan berkas .env sebagai pengaturan utama. Secara asali git tidak membawa berkas yang bernama berawalan dengan titik ( dotfile ). Oleh karena itu, kita perlu membuat berkasnya dengan perintah berikut:

Tanpa Database

$ touch .env

Ingat perintah di atas hanya untuk membuat berkas kosong, kalian masih perlu menarukah baris kode di bawah ini

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=https://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

Kemudian kalian buat app key baru dengan perintah berikut:

$ php artisan key:generate

Langkah terkahir agar project kita dapat dijalan dengan sebagai mana mestinya, lakukan perintah berikut:

$ composer install

Dengan Database

Project Laravel kalian sudah dapat dijalankan. Namun ia terjadi galat karena kalian menggunakan database dalam project tersebut.

Langkah yang harus kalian lakukan adalah pertama-tama sunting berkas .envkalian dan ikuti seperti baris kode di bawah ini:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database_project_kalian
DB_USERNAME=username_database_kalian
DB_PASSWORD=password_databasenya_ya

Lalu kita buat nama database nya dengan perintah:

$ mysql -u root -p'password' -e "create database nama_database_kalian"

Kemudian yang terakhir lakukan perintah migrate yakni:

$ php artisan migrate

Upps..!! Terjadi galat lagi

PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes")

Ini kalau kalian menggunakan Laravel versi terbaru sedang kalian menggunakan database server (MySQl, Mariadb, dsb) yang tidak mendukung utf8mb4 dengan emoji seperti “😁😄😅” ada dua cara menghilangkan galat tersebut.

Pertama upgrade MySQL atau Mariadb kalian ke versi yang lebih baru. Kemudian cara kedua, kita bisa mengikuti langkah-langkah berikut:

Sunting berkas di app/Providers/AppServiceProvider.php :

$ vim app/Providers/AppServiceProvider.php

Tambahkan:

use Illuminate\Support\Facades\Schema;

Dan:

 public function boot()
    {
        Schema::defaultStringLength(191);
    }

Jadi nanti kodenya kira-kira seperti berikut:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

Lalu kemudian kita hapus semua isi table nya dengan tinker

$ php artisan tinker

Dan ketik perintah berikut:

foreach(\DB::select('SHOW TABLES') as $table) {
    $table_array = get_object_vars($table);
    \Schema::drop($table_array[key($table_array)]);
}

Keluar dari tinker dengan menulis quit dan yang terakhir kita migrate lagi dengan perintah:

$ php artisan migrate:refresh

Nah kini, project kita sudah dapat digunakan di localhost. Semoga bermanfaat.