DATABASE
Environment Configuration
Seringkali membantu untuk memiliki nilai konfigurasi yang berbeda berdasarkan environment tempat aplikasi berjalan. Misalnya, Anda mungkin ingin menggunakan driver cache yang berbeda secara lokal daripada yang Anda lakukan di server produksi.
Untuk membuatnya mudah, Laravel menggunakan pustaka PHP DotEnv . Dalam instalasi Laravel baru, direktori root aplikasi Anda akan berisi .env.examplefile yang mendefinisikan banyak variabel environment umum. Selama proses instalasi Laravel, file ini secara otomatis akan disalin ke .env.
.env File default Laravel berisi beberapa nilai konfigurasi umum yang mungkin berbeda berdasarkan apakah aplikasi Anda berjalan secara lokal atau di server web produksi. Nilai-nilai ini kemudian diambil dari berbagai file konfigurasi Laravel di dalam configdirektori menggunakan envfungsi Laravel .
Jika Anda mengembangkan dengan tim, Anda mungkin ingin terus menyertakan .env.examplefile dengan aplikasi Anda. Dengan meletakkan nilai placeholder di file konfigurasi contoh, developer lain di tim Anda dapat melihat dengan jelas variabel environment mana yang diperlukan untuk menjalankan aplikasi Anda.
 |
Contoh dari ENV file |
Database Connection
Hampir setiap aplikasi web modern berinteraksi dengan database. Laravel membuat interaksi dengan database menjadi sangat sederhana di berbagai database yang didukung menggunakan SQL mentah, pembuat kueri yang lancar , dan ORM yang fasih . Saat ini, Laravel menyediakan dukungan pihak pertama untuk empat database:
- MySQL 5.7+
- PostgreSQL 9.6+
- SQLite 3.8.8+
- SQL Server 2017+
Konfigurasi untuk layanan database Laravel terletak di config/database.php file konfigurasi aplikasi Anda . Dalam file ini, Anda dapat menentukan semua koneksi database Anda, serta menentukan koneksi mana yang harus digunakan secara default. Sebagian besar opsi konfigurasi dalam file ini didorong oleh nilai variabel lingkungan aplikasi Anda.
Database Migration
Migration seperti kontrol versi untuk database Anda, yang memungkinkan tim Anda untuk menentukan dan membagikan definisi skema database aplikasi. Jika Anda pernah harus memberi tahu rekan satu tim untuk secara manual menambahkan kolom ke skema database lokal mereka setelah menarik perubahan Anda dari kontrol sumber, Anda menghadapi masalah yang dipecahkan oleh migrasi database.
Schema Facade Laravel menyediakan dukungan agnostik database untuk membuat dan memanipulasi tabel di semua sistem database yang didukung Laravel. Biasanya, migrasi akan menggunakan Facade ini untuk membuat dan memodifikasi tabel dan kolom database.
Migration file berada pada folder database/migrations. Secara default laravel sudah menyediakan 3 file migration.
Dan ini contoh file migration
Untuk menjalankan migration cukup mudah dengan memanggil "php artisan migrate" pada command prompt tapi dengan catatan telah melakukan setup database terlebih dahulu makan migration akan berfungsi
Setelah berhasil di jalankan maka terdapat table baru yang telah tergenerate pada database.
Laravel akan membuat special tabel yaitu migrations untuk men-track migration
file yang sudah dan perlu dijalankan dengan menyimpan nama migration file yang
sudah dijalankan.
Membuat Migration File
Cara yang paling sederhana untuk membuat migration file adalah berbarengan dengan membuat model (Model kita akan bahas lebih lanjut). Untuk membuat model dan file migration jalankan command ini: php artisan make:model BlogPost -m
Command tersebut akan membuat model file app/Models/BlogPost.php dan migration file database/migrations/2021_04_15_043912_create_blog_posts_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateBlogPostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('blog_posts', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->string('title');
$table->text('content');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('blog_posts');
}
}
Setelah itu kita jalankan php artisan migrate kembali
Lalu kita cek pada database maka terbuat table baru bermana blog_posts
Sekarang kita coba jalan migrate rollback. Rollback ini akan menjalankan function down() pada migration file. php artisan migrate:rollback
Kalau kita cek di database, maka table blog_posts sudah tidak ada lagi karena sudah terhapus oleh command rollback tersebut Sekarang jalankan kembali artisan migrate nya supaya tabel blog_posts dibuat kembali. Untuk lebih detail mengenai migration, bisa kunjungi halaman ini
MigrationModel
Laravel menyertakan Eloquent, sebuah object-relational mapper (ORM) yang membuatnya menyenangkan untuk berinteraksi dengan database Anda. Saat menggunakan Eloquent, setiap tabel database memiliki "Model" yang sesuai yang digunakan untuk berinteraksi dengan tabel itu. Selain mengambil catatan dari tabel database, model Eloquent memungkinkan Anda untuk menyisipkan, memperbarui, dan menghapus catatan dari tabel juga.
Untuk memulai, mari buat model Eloquent. Model biasanya tinggal di app\Modelsdirektori dan memperluas Illuminate\Database\Eloquent\Modelkelas. Anda dapat menggunakan make:model perintah Artisan untuk menghasilkan model baru:
Tinker adalah salah satu fitur yang powerfull yang disediakan laravel. Kita bisa menggunakan thinker sebagai playground bagi kita untuk menjalankan code-code php laravel. Kita akan mencoba melakukan DML menggunakan tinker. Untuk menjalankan tinker, jalankan command dibawah ini php artisan tinker
Lalu kita cek pada database maka akan tersimpan data yang telah diinputkan
Database Manipulation Languange menggunakan Tinker
Sekarang kita akan melakukan satu find record berdasarkan id kemudian mengupdate record tersebut
Lalu kita cek pada database
Column updated_at, title dan content sudah terupdate. Column updated_at akan autou update walaupun tidak kita update.
Fetch Multiple Rows
Untuk retrieve multiple rows kita static method all() atau find([id, id, id])
Laravel menggunakan Eloquent Collection class dalam menangani multiple rows
Lebih detail mengenai Collection class bisa dilihat disini
EloquentQuery Builder
Query builder berguna untuk menghandle complex query. KIta akan melakukan insert 5 rows pada tabel user menggunakan factory. Untuk factory kita bahas di lain waktu. Saat ini kita akan fokus ke query builder. Sekarang jalankn command di bawah ini.
Command tersebut akan melakukan insert 5 rows ke dalam database. Sekarang kita akan coba melakukan query ke table user dengan kondisi id >= 2 menggunakan query builder.
Lebih detail mengenai query builder bisa dilihat disini Queries
Connect Controller dan Model
Kita akan mengubah function index() dan show() pada controller app/Http/Controllers/PostsController.php sehingga bisa ambil data langsung database .
<?php
namespace App\Http\Controllers;
use App\Models\BlogPost;
use Illuminate\Http\Request;
class PostsController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$posts = BlogPost::all();
return view('posts.index', ['posts'=> $posts]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$post = BlogPost::findOrFail($id);
return view('posts.show', ['post'=> $post]);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
Lalu kita coba pada browser
Sekian Artikel mengenai Laravel, mohon maaf apabila banyak sekali kekurangan
Terima kasih