MongoDB adalah pilihan tepat untuk sejumlah aplikasi. Di dunia PHP, kita juga dapat mencoba sesuatu yang lebih dari sekadar tumpukan LAMP dan memberikan lebih banyak kebebasan pada skema database kita. Salah satu Object Relational Mappers [ORM] paling populer untuk PHP adalah Doctrine yang kebetulan juga memiliki implementasi Object Document Mapping [ODM] yang sangat baik untuk MongoDB. Kami tidak akan merinci tentang keuntungan atau kerugian dari database NoSql dan SQL tetapi lihat bagaimana kami dapat membangun aplikasi yang sangat sederhana jika kami telah memutuskan untuk menggunakan Mongo
Kode sumber lengkap tersedia di repositori berikut
jkapuscik2/mongo-shopping-cart
Berkontribusi pada pengembangan jkapuscik2/mongo-shopping-cart dengan membuat akun di GitHub
github. com
Kita perlu membuat aplikasi keranjang belanja dengan REST API yang memungkinkan kita melakukannya
- menambahkan produk baru ke katalog
- memperbarui nama produk
- membuat keranjang belanja baru
- menambah dan menghapus produk dari keranjang belanja
- merekam kapan suatu produk ditambahkan ke keranjang
Kami juga memiliki serangkaian persyaratan
- harga suatu produk harus positif dan memiliki mata uang tertentu EUR, PLN, atau USD
- kami hanya dapat memiliki satu produk dari jenis tertentu dalam satu keranjang dan tidak lebih dari 4 produk sekaligus
Kami akan menggunakan framework Symfony karena terintegrasi dengan baik dengan Doctrine ODM. Kita dapat menginstal perpustakaan dan menghasilkan konfigurasi dasar dengan menjalankan perintah berikut
composer config extra.symfony.allow-contrib truecomposer require doctrine/mongodb-odm-bundle
Kami akan mengakses database dengan cara yang sama seperti yang kami lakukan dengan ORM di Doctrine. Kami menggunakan anotasi dalam model yang akan menunjukkan variabel kelas mana yang harus dipertahankan. Di Product
_ kami, kami memberikan nama, harga, dan mata uang sebagai argumen konstruktor. Tidak banyak logika yang diperlukan sehingga kelasnya sangat mudah
Secara default, koleksi memiliki nama yang sama dengan model yang menggunakannya. Kami dapat menyesuaikan perilaku ini dengan memberikan parameter collectionName
dalam anotasi Document
. Kami juga dapat menyimpan beberapa model berbeda dalam satu koleksi karena MongoDb sangat fleksibel dalam hal skema database
Product
menerima objek nilai yang divalidasi yang menegakkan kebenaran data. Kami tidak akan membahas detail penerapannya di sini, ini dapat ditemukan di Github
Doktrin ODM membuat penguncian optimis menjadi sangat sederhana. Mekanisme itu akan memastikan bahwa tidak ada yang memodifikasi model pada saat yang sama dengan kami dengan membandingkan atribut version
. Yang harus kami lakukan adalah meletakkan satu anotasi @ODM\Version
Model keranjang belanja sedikit lebih rumit karena kami harus memastikan semua aturan yang terkait dengan penambahan dan penghapusan produk terpenuhi. Kami dapat menyimpan referensi ke koleksi Produk di Mongo atau menggunakan dokumen yang disematkan. Setiap pendekatan memiliki pro dan kontra. Kami harus menyimpan stempel waktu penambahan produk baru agar dokumen yang disematkan lebih cocok untuk kami. Selain itu, akan lebih efisien
Kami menggunakan data tentang produk dan membuat dokumen tersemat ShoppingCartItem
terpisah
Masalah yang mungkin kita temui adalah sinkronisasi data antar koleksi. Ketika seseorang mengubah nama suatu produk, itu tidak akan disebarkan secara otomatis dan kami akan melihat nama yang sudah ketinggalan zaman di keranjang. Kami harus membuat mekanisme sendiri untuk memastikan konsistensi data
Kami mempertahankan model dengan Doctrine Document Manager. Kita dapat menggunakan repositori khusus untuk setiap model atau menggunakan repositori bawaan dengan fungsionalitas dasar. Demi kesederhanaan, kami akan tetap menggunakan yang terakhir. Jika kami membutuhkan lebih banyak penyesuaian, kami harus menambahkan parameter repositoryClass
di anotasi @ODM\Document
MongoDB membuktikan dirinya sangat berguna dalam sejumlah kasus penggunaan dan dapat bekerja sangat baik dengan PHP. Ini jelas merupakan alternatif yang menarik untuk kebanyakan mesin basis data umum dalam proyek PHP seperti MySql atau PostgreSQL
Jika Anda menggunakan PHP untuk membuat aplikasi, Anda mungkin ingin berinteraksi dengan database MongoDB dalam kode Anda. Untungnya, mudah untuk terhubung ke database MongoDB dari skrip PHP hanya dengan sedikit penyiapan dan konfigurasi. Dalam artikel ini, kami akan menunjukkan cara menyiapkan koneksi PHP dan MongoDB sehingga Anda dapat mengakses database MongoDB di aplikasi Anda
Prasyarat
Sebelum mencoba mengatur koneksi antara PHP dan MongoDB, beberapa prasyarat penting harus ada
Anda harus memastikan bahwa XAMPP atau WAMP sudah diinstal dan dikonfigurasi di sistem Anda
MongoDB harus diinstal dan dikonfigurasi pada mesin Anda
Anda harus memiliki akses internet untuk mengunduh beberapa file yang diperlukan
Instal Driver PHP MongoDB
Di bagian ini, kami akan memulai proses menyiapkan koneksi PHP dan MongoDB dengan menginstal driver PHP MongoDB di sistem kami. Untuk melakukan ini, kami cukup mengunduh file 'DLL' [Dynamic Link Library] yang diperlukan yang dapat ditemukan di tautan ini. MongoDB PHP
Kami akan meletakkan file unduhan ini di salah satu direktori instalasi PHP kami, yang akan kami diskusikan di bagian selanjutnya
Konfigurasikan PHP dan MongoDB di Windows
Selanjutnya, mari kita tinjau cara mengonfigurasi PHP dengan cara yang memungkinkan koneksi ke MongoDB di lingkungan Windows
- Pertama, kita buka php. ini ditemukan di direktori XAMPP berikut.
C:\xampp\php
Selanjutnya, kami menambahkan teks berikut di bagian ekstensi file.
extension=php_mongodb.dll
Terakhir, kita extract file ‘DLL’ yang sudah kita download tadi ke direktori berikut.
C:\xampp\php\ext
Membuat Database Sampel MongoDB
Langkah kita selanjutnya adalah membuat contoh dataset yang bisa kita gunakan dalam tutorial ini
Pertama, kita akan terhubung ke database bernama productdb
Kemudian kita dapat melakukan operasi insertMany[] untuk menambahkan beberapa dokumen tiruan yang dapat kita gunakan untuk tujuan demo. Operasi akan membuat koleksi products
dan menambahkan dokumen-dokumen ini ke dalamnya secara bersamaan
db. produk. masukkanBanyak[ [
{ barang. "keyboard", jumlah. 20},
{ barang. "tikus", qty. 40},
{ barang. "catu daya", qty. 30},
{ barang. "cpu", qty. 30},
{ barang. "kartu video", qty. 20},
{ barang. "modul memori", qty. 30 }
] ];
Operasi ini akan mengembalikan respons yang terlihat seperti berikut
{
"diakui". BENAR,
"memasukkanId". [
ObjectId["5e48b471389f0fd56b8b0554"],
ObjectId["5e48b471389f0fd56b8b0555"],
ObjectId["5e48b471389f0fd56b8b0556"],
ObjectId["5e48b471389f0fd56b8b0557"],
ObjectId["5e48b471389f0fd56b8b0558"],
ObjectId["5e48b471389f0fd56b8b0559"]
]
}
Kami dapat memverifikasi bahwa koleksi products
_ telah berhasil dibuat menggunakan perintah ini. db.products.find[].pretty[];
Kita harus mendapatkan hasil yang terlihat seperti ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"_Indo". ObjectId["5e48b471389f0fd56b8b0554"],
"barang". "papan ketik",
"jumlah". 20
}
{
"_Indo". ObjectId["5e48b471389f0fd56b8b0555"],
"barang". "mouse",
"jumlah". 40
}
{
"_Indo". ObjectId["5e48b471389f0fd56b8b0556"],
"barang". "Sumber Daya listrik",
"jumlah". 30
}
{
"_Indo". ObjectId["5e48b471389f0fd56b8b0557"],
"barang". "cpu",
"jumlah". 30
}
{
"_Indo". ObjectId["5e48b471389f0fd56b8b0558"],
"barang". "kartu video",
"jumlah". 20
}
{
"_Indo". ObjectId["5e48b471389f0fd56b8b0559"],
"barang". "modul memori",
"jumlah". 30
}
Menghubungkan ke Basis Data MongoDB
Di bagian ini, kita akan membuat skrip PHP sederhana yang akan terhubung ke database productdb
kita
Mari kita mulai dengan membuat direktori baru bernama 'phpmongo' di direktori htdocs
. Kami kemudian dapat membuat file PHP baru yang disebut 'test. php’ dan tambahkan kode berikut ke dalamnya
$mng = new MongoDB\Driver\Manager["mongodb. // localhost. 27017"];
$qry = MongoDB\Driver\Query[[]];
$baris = $mng->executeQuery["productdb. produk", $qry];
foreach [$baris sebagai $baris] {
foreach [$baris sebagai $baris] {
echo nl2br["$baris->item. $baris->qty\n"];
}
}
?>
Kode yang ditampilkan di atas akan membaca data dari koleksi 'produk' yang ada di dalam database 'productdb'. Mari kita lihat lebih dekat apa yang terjadi dalam skrip ini
Kami menggunakan
$qry = new MongoDB\Driver\Query[[]];
_ untuk membuat objek kueri MongoDB dengan larik kosong. Ini memberitahu MongoDB untuk membaca semua kemungkinan data dalam koleksi targetKami kemudian menjalankan kueri terhadap nama koleksi yang ditentukan menggunakan baris kode berikut.
$rows = $mng->executeQuery["productdb.products", $qry];
Terakhir, kami mengulangi semua dokumen yang cocok dan mencetaknya di halaman
Hasilnya akan terlihat seperti berikut
Kesimpulan
Saat Anda menulis kode PHP dan perlu berinteraksi dengan database, MongoDB adalah pilihan yang wajar. Untungnya, hanya dibutuhkan beberapa langkah sederhana untuk membuat koneksi antara PHP dan MongoDB. Dalam artikel ini, kami memandu Anda melalui proses lengkap pembuatan koneksi PHP dan MongoDB, dan kami memberikan contoh kode yang mencakup kueri MongoDB biasa. Dengan instruksi dan contoh kode ini untuk memandu Anda, Anda akan dapat menulis kode PHP yang dapat mengkueri database MongoDB Anda sendiri