Sudah mengenal Eloquent ORM kan ? Pada artikel sebelumnya telah mempelajari sedikit pengolahan data ( mengambil dan menampilkan ) dengan Eloquent :
Mengambil dan Menampilkan Data Laravel - MySQL dengan Eloquent
Sekarang di artikel ini akan dipelajari bagaimana cara melakukan operasi simpan data ( insert ) dari Laravel kedalam basis data MySQL dengan metode Eloquent ORM.
Pertama
Buka kembali projek sebelumnya upload-gambar :
Buka file biodata.blade.php, tambahkan kode seperti nampak pada gambar dibawah :
Membuat sebuah link / tautan yang akan mengarahkan ke route /biodata/tambahBiodata.
Kemudian, pindah buka file web.php yang akan kita set pengaturan route-nya dan menyambung dengan Controller ( BiodataController.php )
Route ini akan memanggil BiodataController dan menjalankan method tambah. Setelah route dibuat dalam web.php, lanjut buka BiodataController.php :
public function tambah() {}
Menjadi :
Bagian selanjutnya adalah kita membuat file di dalam folder /view dengan nama tambahBiodata.blade.php ( karena belum ada ) dan sebelumnya di dalam BiodataController memanggil file ini dengan return.
Catatan : Salah satu kelebihan Laravel adalah memanggil sebuah file dalam folder /view tidak perlu menyertakan nama lengkapnya, cukup kata sebelum .blade.php
Arahkan ke route /biodata :
Berhasil! Memunculkan kata "Hi!"
Perhatikan alamat web yang di blok, sesuai dengan route yang kita buat dalam web.php yaitu /biodata/tambahBiodata :
Sekarang kembali ke VS Code, buka file tambahBiodata.blade.php. Ganti baris kode dengan form input untuk nama dan alamat :
Perhatikan pada bagian
<form action="" method="post">
Tambahkan route untuk menyimpan :
/biodata/simpanBiodata
Menjadi :
Setelah menambahkan route di elemen <form action = ... kita pindah ke file web.php untuk membuat handle route-nya :
- Biodata merupakan model yang dibuat sebelumnya, file model ini memiliki sebuah class dengan nama Biodata.
- ::create merupakan perintah yang memiliki kesamaan fungsi dengan :
DB::table('nama_tabel')->insert([]);
dalam penggunaan perintah Query Builder Laravel. Terlihat lebih singkat bukan ?
- Bagian return redirect() yang akan mengarahkan ke ke route /biodata setelah data tersimpan.
Terakhir, buka model Biodata.php dalam folder /app/Models tambahkan perintah protected $fillable = ["nama", "alamat"];
Menjadi :
Perintah tersebut memiliki fungsi untuk menandai kolom yang bisa diisi ( insert ), pada bagian protected $fillable ini value yang ditulis harus sesuai dengan yang ada dalam kolom tabel MySQL. Pastikan tidak ada perbedaan penulisan, underscore ataupun use case-nya.
Yups, penulisan kode untuk insert data selesai sampai disini. Simpan projek tersebut dan coba jalankan dengan perintah :
php artisan server
Klik tautan / link Tambah Biodata
Yeeaaay!!!
Penyimpanan data kedalam MySQL dengan Eloquent Object Relational Mapper berhasil 😎
Good luck! Keep Try Gaes ....
Materi Selanjutnya :
Catatan :Beberapa error yang sering muncul dalam projek terkait CRUD dengan Laravel antara lain :
- 419 Page Expired
Bisa dengan menambahkan @csrf di elemen form input HTML.
- SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list'
Bisa menggunakan sebuah solusi dengan menambahkan public $timestamps = false; di dalam model yang digunakan.
- SQLSTATE[HY000]: General error: 1364 Field 'id'
Bisa menggunakan solusi kolom id dalam MySQL dijadikan auto increment. Sebab belum memiliki default value.
Dengan kolom yang tidak ada default value, maka data tidak ada yang disimpan. Sedang umumnya kolom id itu memiliki tambahan sebagai Primary Key, Primary Key memiliki syarat tidak boleh null / kosong dan tidak boleh memiliki nilai atau value yang sama.
Karena tidak di input / masukkan dalam tabel yang fillable dalam model.
Tags:
Laravel