Anda di halaman 1dari 12

PRAKTIKUM 5

LARAVEL DATABASE

1.1 TIK
Setelah menyelesaikan materi ini diharapkan mahasiswa akan dapat
1. Menjelaskan akses database di framework Laravel
2. Menjelaskan setting database di sistem Laravel
3. Melakukan akses database CRUD dalam pemrograman framework Laravel

1.2 DASAR TEORI

Laravel Framework menyediakan berbagai metode untuk berinteraksi dengan basis data
aplikasi.Tapi, Eloquent paling populer, Laravel's ActiveRecord ORM (object-relational
mapper). Laravel memungkinkan pengembang untuk berinteraksi dengan beragam basis data
menggunakan SQL mentah, pembuat kueri yang lancar, dan Eloquent ORM. Panduan Koneksi
Database Laravel ini akan membantu Anda memahami pengaturan konfigurasi yang diperlukan
dan cara menggunakan kueri SQL mentah untuk menjalankan operasi baca, tulis, perbarui, dan
hapus.
Untuk mengkonfigurasi koneksi basis data Laravel, Laravel mendukung banyak platform basis
data dan kami dapat memilih salah satu dari mereka untuk mengembangkan aplikasi kami:

 MySQL
 PostgreSQL
 SQLite
 SQL Server
MySQL adalah salah satu platform paling populer dan gratis untuk pengembangan basis data

Mengkonfigurasi Koneksi Database Laravel


Sebelum kita membahas cara menggunakan alat basis data Laravel, mari kita belajar cara
mengkonfigurasi koneksi dan kredensial basis data Laravel Anda. Semua konfigurasi untuk
koneksi basis data di laravel disimpan dalam file config / database.php.
Laravel memungkinkan untuk mendefinisikan beberapa "koneksi" dan kemudian memutuskan
kode mana yang akan digunakan secara default. File ini berisi contoh-contoh untuk sebagian
besar sistem basis data yang didukung disediakan dalam file ini.

Menghubungkan ke Koneksi Database Laravel


Secara default, ada satu koneksi untuk masing-masing jenis koneksi, seperti yang Anda lihat di
file konfigurasi database config / database.php. Setiap koneksi memungkinkan Anda untuk
menentukan properti yang diperlukan untuk menghubungkan dan menyesuaikan setiap jenis
koneksi.
Bagaimana cara terhubung ke MySQL di Laravel?
Ini adalah salah satu pertanyaan dasar yang dicari di Laravel sebelum membangun aplikasi
Laravel. Sekali lagi, Laravel menyediakan mekanisme yang sangat sederhana untuk mengelola
koneksi basis data Anda melalui app/ config/database.php. File ini juga dikenal sebagai file
konfigurasi database laravel . Cuplikan kode berikut menjelaskan konfigurasi database laravel
MySQL:

<? php

kembali [
/*
| ------------------------------------------------- -------------------------
| Nama Koneksi Database Default
| ------------------------------------------------- -------------------------
|
| Di sini Anda dapat menentukan koneksi database mana di bawah yang Anda inginkan
| untuk digunakan sebagai koneksi default Anda untuk semua pekerjaan basis data. Tentu saja
| Anda dapat menggunakan banyak koneksi sekaligus menggunakan perpustakaan Database.
|
*/

'default' => env ('DB_CONNECTION', 'mysql'),


/*
| ------------------------------------------------- -------------------------
| Koneksi Basis Data
| ------------------------------------------------- -------------------------
|
| Berikut adalah masing-masing pengaturan koneksi database untuk aplikasi Anda.
| Tentu saja, contoh konfigurasi setiap platform basis data yang ada
| didukung oleh Laravel ditunjukkan di bawah ini untuk mempermudah pengembangan.
|
|
| Semua pekerjaan basis data di Laravel dilakukan melalui fasilitas PHP PDO
| jadi pastikan Anda memiliki driver untuk basis data khusus Anda
| pilihan diinstal pada mesin Anda sebelum Anda memulai pengembangan.
|
*/

'koneksi' => [

'sqlite' => [
'driver' => 'sqlite',
'database' => env ('DB_DATABASE', database_path ('database.sqlite')),
'awalan' => '',
],

'mysql' => [
'driver' => 'mysql',
'host' => env ('DB_HOST', 'localhost'),
'port' => env ('DB_PORT', '3306'),
'database' => env ('DB_DATABASE', 'forge'),
'username' => env ('DB_USERNAME', 'forge'),
'kata sandi' => env ('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'awalan' => '',
'ketat' => salah,
'engine' => null,
],

Untuk menghindari nilai-nilai hard-coded dalam file konfigurasi, Laravel 5 menyediakan


mekanisme untuk mendefinisikan seperangkat pengaturan konfigurasi yang umum
dalam .envLaravel Environment File .
File lingkungan berisi variabel berikut untuk koneksi database:
Lingkungan konfigurasi basis data Laravel:

DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = db_demo
DB_USERNAME = pengguna
DB_PASSWORD = kata sandi

Jadi, berikut ini adalah langkah - langkah dasar untuk terhubung ke database MySQL di
Laravel:
Langkah 1 - Buat Database baru menggunakan antarmuka PhpMyAdmin
Langkah2 - Ubah properti berikut di file .env Anda sesuai dengan pengaturan database Anda.
Langkah 3 - Jalankan Migrasi. Ini akan secara otomatis membuat tabel.

Konfigurasikan Banyak Koneksi Database di Laravel


Ya, Laravel dapat menangani beberapa koneksi basis data sekaligus dalam aplikasi yang sama.
Laravel memungkinkan pengembang untuk mengonfigurasi dan menggunakan beberapa koneksi
basis data sekaligus dalam aplikasi Laravel yang sama. Dalam hal ini bagaimana menentukan
yang mana yang akan digunakan saat menggunakan operasi SQL.
Ketika aplikasi menggunakan beberapa koneksi database, koneksi database spesifik dapat
diakses menggunakan metode "koneksi" pada fasad DB. Inilah cara Anda meminta Laravel
untuk terhubung ke database tertentu:

Sintaks - DB :: koneksi ('database_name') -> select (...);


Contoh - $ pengguna = DB :: koneksi ('sekunder') -> pilih ('pilih * dari pengguna');

Nama yang diteruskan ke metode koneksi harus sesuai dengan salah satu koneksi yang terdaftar
di file konfigurasi config / database.php Anda.

Menghubungkan kembali Database yang Diberikan:

DB :: terhubung kembali ('foo');

Putuskan koneksi basis data di Laravel

DB :: disconnect ('foo');

Menjalankan Query SQL Baku di Laravel


Operasi SQL database umum adalah -
PILIH , PEMBARUAN , BUAT , INSERT dan HAPUS .Setelah Anda mengkonfigurasi
koneksi database Anda, Anda dapat menjalankan query SQL menggunakan fasad DB Laravel.
Fasad DB Laravel menyediakan metode untuk setiap jenis kueri: pilih, perbarui, masukkan,
hapus, dan pernyataan. Berikut adalah beberapa metode Raw SQL:

Menjalankan Kueri Pilih


Metode pilih dapat digunakan pada fasad Laravel DB untuk mengambil data dari database.

$ guru = DB :: select ('select * dari guru where active =?', [1]);


Di sini, parameter pertama untuk memilih metode adalah permintaan SQL Baku dan parameter
kedua adalah variabel terikat ke permintaan. Jadi, di sini kueri yang dihasilkan adalah:
'pilih * dari pengguna yang aktif = 1';
Format hasil kueri SQL:
Metode pilih selalu mengembalikan array nilai hasil.
Setiap hasil dalam array akan menjadi objek PHP stdClass, memungkinkan Anda untuk
mengakses nilai-nilai hasil:

foreach ($ guru sebagai $ guru)


{
echo $ teacher-> name;
}

Menjalankan Pernyataan Sisipkan


Mirip dengan metode pilih, ada metode memasukkan disebut pada fasad DB. Digunakan untuk
memasukkan nilai-nilai baru ke dalam tabel MySQL DB.

DB :: masukkan ('masukkan ke nilai pengguna (id, nama) (?,?)', [1, 'Dayle']);

Menjalankan Pernyataan Pembaruan


Untuk memperbarui catatan yang ada di database, metode pembaruan digunakan.

$ terpengaruhRows = DB :: update ('perbarui guru menetapkan suara = 100 di mana nama =?',
['ABC']);

Di sini, nilai hasil akan menjadi jumlah baris yang terpengaruh.

Menjalankan Pernyataan Hapus


Metode hapus digunakan untuk menghapus catatan yang ada di tabel database.

$ delete = DB :: delete ('delete from teacher');

Mengembalikan jumlah catatan yang dihapus.

Hapus Catatan Tertentu


Metode hapus digunakan untuk menghapus catatan yang ada di tabel database.
DB :: delete ('delete from student where id =?', [$ Id]);

Mengembalikan jumlah catatan yang dihapus.

Menghapus tabel di Laravel

DB :: statement ('drop table users');


Mengembalikan jumlah catatan yang dihapus.

Pencatatan Query Database Laravel:


Kerangka kerja Laravel, secara default koneksi database Laravel menyimpan log dari
permintaan DB yang baru-baru ini dijalankan.
Jika diperlukan, kami dapat menonaktifkan pencatatan permintaan default menggunakan metode
disableQueryLog ().

Nonaktifkan Pencatatan Permintaan

DB :: connection () -> disableQueryLog ();


Ambil Log Kueri yang Dieksekusi:
$ queries = DB :: getQueryLog ();

Ini mengembalikan array dari query database yang dieksekusi.

1.3 ALAT DAN BAHAN


1. Komputer
2. Text Editor
3. XAMPP
4. Composer
5. Laravel

1.4 LANGKAH KERJA


DATABASE CRUD
1. Buat database di MYSQL dan table
Database: College
Table: student
Column Name Column Datatype Extra

Id int(11) Primary key | Auto increment

Name varchar(25)

2. Atur file.env di Laravel

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

3. Kode Insert Record


a. Buat controller StudInsertController
php artisan make:controller StudInsertController

b. Tambahkan ke file
app/Http/Controllers/StudInsertController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudInsertController extends Controller {


public function insertform() {
return view('stud_create');
}

public function insert(Request $request) {


$name = $request->input('stud_name');
DB::insert('insert into student (name) values(?)',[$name]);
echo "Record inserted successfully.<br/>";
echo '<a href = "/insert">Click Here</a> to go back.';
}
}
c. Buat file
resources/views/stud_create.php
<html>
<head>
<title>Student Management | Add</title>
</head>

<body>
<form action = "/create" method = "post">
<input type = "hidden" name = "_token" value = "<?php echo csrf_token(); ?>">
<table>
<tr>
<td>Name</td>
<td><input type='text' name='stud_name' /></td>
</tr>
<tr>
<td colspan = '2'>
<input type = 'submit' value = "Add student"/>
</td>
</tr>
</table>
</form>

</body>
</html>
d. tambahkan routes/web.php.
Route::get('insert','StudInsertController@insertform');
Route::post('create','StudInsertController@insert');

e. Visit the following URL to insert record in database.


http://localhost:8000/insert

4. Kode Ambil Record


a. Buat StudViewController.
php artisan make:controller StudViewController

b. tambahkan ke file
app/Http/Controllers/StudViewController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudViewController extends Controller {


public function index() {
$users = DB::select('select * from student');
return view('stud_view',['users'=>$users]);
}
}

c. Buat file
resources/views/ stud_view.blade.php
<html>

<head>
<title>View Student Records</title>
</head>

<body>
<table border = 1>
<tr>
<td>ID</td>
<td>Name</td>
</tr>
@foreach ($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
</tr>
@endforeach
</table>
</body>
</html>

d. Tambahkan ke file routes/web.php


Route::get('view-records','StudViewController@index');

e. Tes
http://localhost:8000/view-records

5. Kode Edit Record


a. Buat file StudUpdateController.
php artisan make:controller StudUpdateController

b. Tambahkan ke file a pp/Http/Controllers/StudUpdateController.php


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudUpdateController extends Controller {


public function index() {
$users = DB::select('select * from student');
return view('stud_edit_view',['users'=>$users]);
}
public function show($id) {
$users = DB::select('select * from student where id = ?',[$id]);
return view('stud_update',['users'=>$users]);
}
public function edit(Request $request,$id) {
$name = $request->input('stud_name');
DB::update('update student set name = ? where id = ?',[$name,$id]);
echo "Record updated successfully.<br/>";
echo '<a href = "/edit-records">Click Here</a> to go back.';
}
}

c. Buat File
resources/views/stud_edit_view.blade.php
<html>
<head>
<title>View Student Records</title>
</head>

<body>

<table border = "1">


<tr>
<td>ID</td>
<td>Name</td>
<td>Edit</td>
</tr>
@foreach ($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td><a href = 'edit/{{ $user->id }}'>Edit</a></td>
</tr>
@endforeach
</table>
</body>
</html>

d. Buat file
resources/views/stud_update.php
<html>

<head>
<title>Student Management | Edit</title>
</head>

<body>
<form action = "/edit/<?php echo $users[0]->id; ?>" method =
"post">
<input type = "hidden" name = "_token" value = "<?php echo
csrf_token(); ?>">

<table>
<tr>
<td>Name</td>
<td>
<input type = 'text' name = 'stud_name'
value = '<?php echo$users[0]->name; ?>'/>
</td>
</tr>
<tr>
<td colspan = '2'>
<input type = 'submit' value = "Update student" />
</td>
</tr>
</table>
</form>
</body>
</html>

e. Tambahkan ke file routes/web.php.


Route::get('edit-records','StudUpdateController@index');
Route::get('edit/{id}','StudUpdateController@show');
Route::post('edit/{id}','StudUpdateController@edit');

f. Tes
http://localhost:8000/edit-records

6. Hapus record
a. Buat file StudDeleteController.
php artisan make:controller StudDeleteController --plain
b. Tambahkan kode
app/Http/Controllers/StudDeleteController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudDeleteController extends Controller {


public function index() {
$users = DB::select('select * from student');
return view('stud_delete_view',['users'=>$users]);
}
public function destroy($id) {
DB::delete('delete from student where id = ?',[$id]);
echo "Record deleted successfully.<br/>";
echo '<a href = "/delete-records">Click Here</a> to go back.';
}
}

c. Buat file
resources/views/stud_delete_view.blade.php
<html>

<head>
<title>View Student Records</title>
</head>

<body>
<table border = "1">
<tr>
<td>ID</td>
<td>Name</td>
<td>Edit</td>
</tr>
@foreach ($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td><a href = 'delete/{{ $user->id }}'>Delete</a></td>
</tr>
@endforeach
</table>
</body>
</html>

d. Tambahkan di routes/web.php.
app/Http/routes.php
Route::get('delete-records','StudDeleteController@index');
Route::get('delete/{id}','StudDeleteController@destroy');

e. Tes
http://localhost:8000/delete-records

1.5 LATIHAN
Buat CRUD untuk Database Shop dengan Tabel Product yang mempunyai field
No(auto increment), Nama Item (Char), Harga (Integer), Jumlah (Integer)

Anda mungkin juga menyukai