Pada kesempatan kali ini kita akan membahas tentang sebuah fitur dari Laravel yang berguna untuk mengakses / berinteraksi dengan data pada aplikasi kita dengan cara cepat. Untuk melakukannya kita dapat menggunakan Laravel artisan's built-in php artisan tinker
. Laravel artisan's tinker adalah REPL (Read Eval Print Loop) sebuah bahasa shell yang interaktif, menggunakan single user input, mengolahnya dan mengembalikan nilai berdasarkan input yang diberikan kepada user.
Otentikasi Menggunakan Google Two Factor di Laravel
Menggunakan Tinker
Pada penerapan yang sebenarnya, kita akan berinteraksi dengan code berikut untuk memanipulasi database:
//Menghitung total data user
App\User::count();
//Mengambil satu data dengan email tertentu
App\User::where('email', '[email protected])->first();
//Mengakses relasi dari user
$user = App\User::with('posts')->first();
$user->posts;
Dengan php artisan tinker
, kita dapat mengimplementasikan code diatas dengan cara cepat. Tinker dibangun dengan PsySH, yang memungkinkan kita untuk berinteraksi dengan aplikasi, menganalisa data dengan dd()
dan mematikan fungsi dengan die()
kapanpun yang kita inginkan.
Sebelum mengugnakan tinker, langkah pertama yang harus kita lakukan adalah membuat sebuah project baru dengan berisi kumpulan data yang nantinya akan kita gunakan untuk berinteraksi dengan tinker. Maka install Laravel terlebih dahulu:
composer create-project --prefer-dist laravel/laravel tinker
Setelah proses instalasi selesai, kita harus membuat sebuah database dan setup migrations. Pada artikel kali ini kita akan memanfaatkan migration bawaan Laravel. Jadi kita akan mengkonfigurasi file .env
untuk menghubungkan ke database yang telah kita buat.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=daengweb
DB_USERNAME=root
DB_PASSWORD=toor
Default migration dari Laravel meliputi table users
dan table password_resets
, kita akan memanfaatkan ini maka jalankan command:
php artisan migrate
Karena kita membutuhkan sample data guna menunjang experiment dalam menggunakan tinker, maka kita akan membuat seeder untuk meng-generate random data pada table users
. Secara default Laravel telah menyedian sebuah Model Factory
yang dapat digunakan untuk membuat seed kedalam database. Maka mari kita mulai untuk menggunakan tinker pada aplikasi kita.
Pada command line, ketikkan command berikut:
php artisan tinker
Command diatas akan membuka sebuah repl
untuk berinteraksi dengan aplikasi Laravel anda. Untuk membuat seed data kita dapat menggunakan model factory pada tinker interface, jalankan command berikut:
factory(App\User::class, 10)->create();
Secara otomatis Laravel telah meng-generate 10 data baru yang disimpan kedalam table users
, collection data yang di-generate telah ditampilkan pada command line anda. Kita dapat mengecek data tersebut dengan menggunakan command berikut:
App\User::all();
Untuk mendapatkan total user yang terdapat didalam database, kita dapat menggunakan count
pada model User
.
App\User::count();
Membuat & Menghapus Data User
Masih menggunakan tinker, kita dapat membuat data baru kedalam table user (baca: karena contoh kali ini kita bekerja menggunakan model User). Untuk membuatnya tidak jauh berbeda ketika anda menggunakan Eloquent pada controller, so ketikkan command berikut:
$user = new App\User;
$user->name = "Anugrah Sandi";
$user->email = "[email protected]";
$user->password = bcrypt('secret');
$user->save();
Data baru telah disimpan dan ditampung sementara kedalam variable user, so anda dapat mengetikkan $user
kemudian tekan enter maka data tersebut akan ditampilkan seperti berikut:
Selain membuat data baru, kita juga bisa menghapus data menggunakan tinker. Kita hanya perlu melakukan hal berikut:
$user = App\User::find(1);
$user->delete();
Kesimpulan
Laravel Tinker adalah sebuah tool yang dapat memudahkan kita untuk berinteraksi dengan aplikasi kita tanpa harus mengakses local server. Anda dapat mengexplore lebih banyak lagi untuk berinteraksi dengan aplikasi anda menggunakan tinker, misal: mengakses table yang berelasi. Anda cukup menuliskan code anda layaknya anda bekerja pada controller misalnya.
Comments