Menyimpan Data ( Insert ) Laravel - MySQL dengan Eloquent ORM

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 :

Belum ada method tambah kan ? Kemudian tambahkan 
public function tambah() {

}  

Menjadi :

Method ini akan mengembalikan sebuah view dengan nama tambahBiodata.blade.php

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

Buka file tambahBiodata.blade.php dan tambahkan "Hi!" sebagai contoh :

Sekarang, mari coba jalankan dengan php artisan serve


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 :

Sesuaikan dengan kolom yang ada dalam tb_biodata sebelumnya 

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 :

Kemudian setelah selesai, pindah ke BiodataController untuk membuat method tambahBiodata.

Isi method tersebut dengan baris kode :

Ket :
  • 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

Isi form input tersebut kemudian langsung klik Simpan.

Akses kembali route /biodata dan taraaaaaa data telah tersimpan dan bisa muncul :




Yeeaaay!!!
Penyimpanan data kedalam MySQL dengan Eloquent Object Relational Mapper berhasil 😎
Good luck! Keep Try Gaes ....

Materi Selanjutnya :
  • Hapus Data dengan Eloquent ORM
  • Perbarui Data dengan Eloquent ORM
👉Baca Lengkapnya Disini


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.




Ahmad Istakim

Alumni dari jurusan Manajemen Informatika di Universitas Sains Al-Qur'an (UNSIQ ) Wonosobo. Tertarik dalam bidang pendidikan, teknologi komputasi dan disiplin ilmu keislaman ( Tafsir, Hadits, Arudl, Nahwu-Sharaf, Fiqh maupun Aqidah ) - https://s.id/blog-islamQ. Pernah juga mengenyam pendidikan di beberapa pesantren yang ada di Kab. Wonosobo dan Kab. Purworejo

Posting Komentar

Lebih baru Lebih lama