Paket ini menambahkan fungsionalitas ke model Eloquent dan pembuat Kueri untuk MongoDB, menggunakan Laravel API asli. Pustaka ini memperluas kelas Laravel asli, sehingga menggunakan metode yang persis sama
Instalasi
Pastikan Anda telah menginstal driver MongoDB PHP. Anda dapat menemukan petunjuk instalasi di http. //php. net/manual/en/mongodb. instalasi. php
Kompatibilitas versi Laravel
LaravelPackageTerpelihara9. x3. 9. x✅8. x3. 8. x✅7. x3. 7. x❌6. x3. 6. x❌5. 8. x3. 5. x❌5. 7. x3. 4. x❌5. 6. x3. 4. x❌5. 5. x3. 3. x❌5. 4. x3. 2. x❌5. 3. x3. 1. x atau 3. 2. x❌5. 2. x2. 3. x atau 3. 0. x❌5. 1. x2. 2. x atau 3. 0. x❌5. 0. x2. 1. x❌4. 2. x2. 0. x❌Instal paket melalui Komposer
$ composer require jenssegers/mongodb
Laravel
Jika versi Laravel Anda TIDAK memuat paket secara otomatis, tambahkan penyedia layanan ke use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }7
Jenssegers\Mongodb\MongodbServiceProvider::class,
Lumen
Untuk penggunaan dengan Lumen, tambahkan penyedia layanan di use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }8. Dalam file ini, Anda juga perlu mengaktifkan Eloquent. Namun Anda harus memastikan bahwa panggilan Anda ke use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }9 berada di bawah tempat Anda mendaftarkan Jenssegers\Mongodb\MongodbServiceProvider::class,00
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_
Penyedia layanan akan mendaftarkan ekstensi database MongoDB dengan pengelola database asli. Tidak perlu mendaftarkan fasad atau objek tambahan
Saat menggunakan koneksi MongoDB, Laravel akan secara otomatis memberi Anda objek MongoDB yang sesuai
Proyek non-Laravel
Untuk penggunaan di luar Laravel, lihat manajer Kapsul dan tambahkan
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });
Pengujian
Untuk menjalankan pengujian paket ini, jalankan
docker-compose up _
Pengujian Basis Data
Untuk mereset database setelah setiap pengujian, tambahkan
use Illuminate\Foundation\Testing\DatabaseMigrations;_
Juga di dalam setiap kelas tes, tambahkan
use DatabaseMigrations;
Perlu diingat bahwa ciri-ciri ini belum didukung
- Jenssegers\Mongodb\MongodbServiceProvider::class,_01
- Jenssegers\Mongodb\MongodbServiceProvider::class,_02
Konfigurasi
Untuk mengonfigurasi koneksi MongoDB baru, tambahkan entri koneksi baru ke Jenssegers\Mongodb\MongodbServiceProvider::class,03
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],
Kunci Jenssegers\Mongodb\MongodbServiceProvider::class,_04 berisi string koneksi yang digunakan untuk terhubung ke penerapan MongoDB Anda. Format dan opsi yang tersedia didokumentasikan dalam dokumentasi MongoDB
Alih-alih menggunakan string koneksi, Anda juga dapat menggunakan opsi konfigurasi Jenssegers\Mongodb\MongodbServiceProvider::class,05 dan Jenssegers\Mongodb\MongodbServiceProvider::class,06 agar string koneksi dibuat untuk Anda
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],
Kunci Jenssegers\Mongodb\MongodbServiceProvider::class,_07 dalam konfigurasi koneksi sesuai dengan
Fasih
Memperluas model dasar
Paket ini menyertakan kelas Eloquent berkemampuan MongoDB yang dapat Anda gunakan untuk menentukan model untuk koleksi yang sesuai
use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_
Sama seperti model normal, kelas model MongoDB akan mengetahui koleksi mana yang akan digunakan berdasarkan nama model. Untuk Jenssegers\Mongodb\MongodbServiceProvider::class,_09, koleksi Jenssegers\Mongodb\MongodbServiceProvider::class,10 akan digunakan
Untuk mengubah koleksi, berikan properti Jenssegers\Mongodb\MongodbServiceProvider::class,_11
Jenssegers\Mongodb\MongodbServiceProvider::class,0
CATATAN. Dokumen MongoDB disimpan secara otomatis dengan ID unik yang disimpan di properti Jenssegers\Mongodb\MongodbServiceProvider::class,12. Jika Anda ingin menggunakan ID Anda sendiri, gantikan properti Jenssegers\Mongodb\MongodbServiceProvider::class,13 dan setel ke nama atribut kunci utama Anda sendiri
Jenssegers\Mongodb\MongodbServiceProvider::class,1
Demikian juga, Anda dapat menentukan properti Jenssegers\Mongodb\MongodbServiceProvider::class,_14 untuk mengganti nama koneksi database yang harus digunakan saat menggunakan model
Jenssegers\Mongodb\MongodbServiceProvider::class,2
Memperluas model dasar Authenticatable
Paket ini menyertakan kelas MongoDB Authenticatable Eloquent Jenssegers\Mongodb\MongodbServiceProvider::class,15 yang dapat Anda gunakan untuk mengganti kelas Authenticatable default Jenssegers\Mongodb\MongodbServiceProvider::class,16 untuk model Jenssegers\Mongodb\MongodbServiceProvider::class,17 Anda
Jenssegers\Mongodb\MongodbServiceProvider::class,_3
Penghapusan Lembut
Saat soft menghapus model, itu sebenarnya tidak dihapus dari database Anda. Sebagai gantinya, stempel waktu delete_at disetel pada catatan
Untuk mengaktifkan penghapusan sementara untuk model, terapkan Jenssegers\Mongodb\MongodbServiceProvider::class,18 Trait ke model
Jenssegers\Mongodb\MongodbServiceProvider::class,_4
Untuk informasi lebih lanjut, periksa
Menjaga atribut
Saat memilih antara menjaga atribut atau menandai beberapa sebagai dapat diisi, Taylor Otwell lebih memilih rute yang dapat diisi. Ini mengingat masalah keamanan baru-baru ini yang dijelaskan di sini
Ingatlah bahwa menjaga tetap berfungsi, tetapi Anda mungkin mengalami perilaku yang tidak terduga
tanggal
Eloquent memungkinkan Anda bekerja dengan objek Carbon atau DateTime alih-alih objek MongoDate. Secara internal, tanggal ini akan dikonversi menjadi objek MongoDate saat disimpan ke database
Jenssegers\Mongodb\MongodbServiceProvider::class,5
Ini memungkinkan Anda untuk mengeksekusi kueri seperti ini
Jenssegers\Mongodb\MongodbServiceProvider::class,6
Penggunaan Dasar
Mengambil semua model
Jenssegers\Mongodb\MongodbServiceProvider::class,7
Mengambil catatan dengan kunci utama
Jenssegers\Mongodb\MongodbServiceProvider::class,_8
Di mana
Jenssegers\Mongodb\MongodbServiceProvider::class,_9
ATAU Pernyataan
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_0
DAN pernyataan
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_1
di mana
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_2
Saat menggunakan Jenssegers\Mongodb\MongodbServiceProvider::class,_19 objek akan dikembalikan jika bidang tidak ada. Gabungkan dengan Jenssegers\Mongodb\MongodbServiceProvider::class,_20 untuk meninggalkan dokumen tersebut
dimana Antara
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_3
dimanaNull
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_4
di manaTanggal
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_5
Penggunaannya sama dengan Jenssegers\Mongodb\MongodbServiceProvider::class,_21 / Jenssegers\Mongodb\MongodbServiceProvider::class,22 / Jenssegers\Mongodb\MongodbServiceProvider::class,23 / Jenssegers\Mongodb\MongodbServiceProvider::class,24
Lanjut mana
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_6
dipesan oleh
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_7
Offset & Limit (lewati & ambil)
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_8
groupBy
Kolom terpilih yang tidak dikelompokkan akan digabungkan dengan fungsi Jenssegers\Mongodb\MongodbServiceProvider::class,25
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withEloquent();_9
Berbeda
Distinct membutuhkan bidang untuk mengembalikan nilai yang berbeda
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });0
Distinct dapat digabungkan dengan where
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });1
Menyukai
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });2
Pengumpulan
Agregasi hanya tersedia untuk versi MongoDB yang lebih besar dari 2. 2. x
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });3
Agregasi dapat digabungkan dengan where
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });4
Agregasi juga dapat digunakan pada sub-dokumen
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });5
CATATAN. Agregasi ini hanya berfungsi dengan sub-dokumen tunggal (seperti Jenssegers\Mongodb\MongodbServiceProvider::class,26) bukan array subdokumen (seperti Jenssegers\Mongodb\MongodbServiceProvider::class,27)
Menambah/Mengurangi nilai kolom
Lakukan penambahan atau pengurangan (default 1) pada atribut yang ditentukan
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });6
Jumlah objek yang diperbarui dikembalikan
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });7
Anda juga dapat menentukan kolom tambahan untuk diperbarui
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });_8
Operator khusus MongoDB
Ada
Mencocokkan dokumen yang memiliki bidang tertentu
$capsule->getDatabaseManager()->extend('mongodb', function($config, $name) { $config['name'] = $name; return new Jenssegers\Mongodb\Connection($config); });_9
Semua
Mencocokkan larik yang berisi semua elemen yang ditentukan dalam kueri
docker-compose up _0
Ukuran
Memilih dokumen jika bidang larik adalah ukuran yang ditentukan
docker-compose up _1
Regex
Memilih dokumen yang nilainya cocok dengan ekspresi reguler yang ditentukan
docker-compose up _2
CATATAN. Anda juga dapat menggunakan operasi regexp Laravel. Ini sedikit lebih fleksibel dan secara otomatis akan mengonversi string ekspresi reguler Anda menjadi objek Jenssegers\Mongodb\MongodbServiceProvider::class,28
docker-compose up _3
Kebalikan dari regexp
docker-compose up _4
Jenis
Memilih dokumen jika bidang adalah jenis yang ditentukan. Untuk informasi lebih lanjut, periksa.
docker-compose up _5
Mod
Melakukan operasi modulo pada nilai bidang dan memilih dokumen dengan hasil tertentu
docker-compose up _6
Operasi Geo khusus MongoDB
Di dekat
docker-compose up _7
GeoWithin
docker-compose up _8
GeoIntersects
docker-compose up _9
GeoNear
Anda dapat membuat kueri Jenssegers\Mongodb\MongodbServiceProvider::class,_29 di mongoDB. Anda tidak perlu menentukan bidang otomatis pada model. Instance yang dikembalikan adalah koleksi. Jadi, Anda dapat melakukan operasi Pengumpulan. Pastikan model Anda memiliki bidang Jenssegers\Mongodb\MongodbServiceProvider::class,_30, dan 2ndSphereIndex. Data di bidang Jenssegers\Mongodb\MongodbServiceProvider::class,_30 harus disimpan sebagai GeoJSON. Jenssegers\Mongodb\MongodbServiceProvider::class,_30 poin harus disimpan sebagai sistem referensi untuk perhitungan geometri. Itu berarti, pada dasarnya, Anda perlu menyimpan Jenssegers\Mongodb\MongodbServiceProvider::class,33, dalam urutan itu secara khusus, dan untuk menemukan yang dekat dengan jarak yang dihitung, Anda Jenssegers\Mongodb\MongodbServiceProvider::class,34
use Illuminate\Foundation\Testing\DatabaseMigrations;_0
Menyisipkan, memperbarui, dan menghapus
Memasukkan, memperbarui, dan menghapus catatan berfungsi seperti Eloquent asli. Silakan periksa bagian Eloquent Laravel Docs
Di sini, hanya operasi khusus MongoDB yang ditentukan
Operasi spesifik MongoDB
Ekspresi Mentah
Ekspresi ini akan disuntikkan langsung ke kueri
use Illuminate\Foundation\Testing\DatabaseMigrations;_1
Anda juga dapat melakukan ekspresi mentah pada objek MongoCollection internal. Jika ini dijalankan pada kelas model, itu akan mengembalikan koleksi model
Jika ini dijalankan pada pembuat kueri, respons asli akan dikembalikan
Batas waktu kursor
Untuk mencegah pengecualian Jenssegers\Mongodb\MongodbServiceProvider::class,_35, Anda dapat menetapkan nilai batas waktu yang akan diterapkan ke kursor secara manual
use Illuminate\Foundation\Testing\DatabaseMigrations;_2
Upsert
Perbarui atau sisipkan dokumen. Opsi tambahan untuk metode pembaruan diteruskan langsung ke metode pembaruan asli
use Illuminate\Foundation\Testing\DatabaseMigrations;_3
Proyeksi
Anda dapat menerapkan proyeksi ke kueri Anda menggunakan metode ________2______36
use Illuminate\Foundation\Testing\DatabaseMigrations;_4
Proyeksi dengan Paginasi
use Illuminate\Foundation\Testing\DatabaseMigrations;_5
Dorongan
Tambahkan item ke array
use Illuminate\Foundation\Testing\DatabaseMigrations;_6
use Illuminate\Foundation\Testing\DatabaseMigrations;_7
Jika Anda TIDAK menginginkan item duplikat, setel parameter ketiga ke Jenssegers\Mongodb\MongodbServiceProvider::class,37
use Illuminate\Foundation\Testing\DatabaseMigrations;_8
Menarik
Hapus item dari array
use Illuminate\Foundation\Testing\DatabaseMigrations;_9
use DatabaseMigrations;_0
Batal disetel
Hapus satu atau beberapa bidang dari dokumen
use DatabaseMigrations;_1
Hubungan
Penggunaan Dasar
Satu-satunya hubungan yang tersedia adalah
- Punya satu
- memiliki banyak
- Milik
- milikToMany
Hubungan khusus MongoDB adalah
- embedsOne
- embedsMany
Ini adalah contoh kecil
use DatabaseMigrations;_2
Relasi terbalik dari Jenssegers\Mongodb\MongodbServiceProvider::class,38 adalah Jenssegers\Mongodb\MongodbServiceProvider::class,39
use DatabaseMigrations;_3
milikToMany dan pivot
Relasi milikToMany tidak akan menggunakan "tabel" pivot tetapi akan mendorong id ke atribut related_ids sebagai gantinya. Ini membuat parameter kedua untuk metode milikToMany tidak berguna
Jika Anda ingin menentukan kunci khusus untuk relasi Anda, setel ke Jenssegers\Mongodb\MongodbServiceProvider::class,40
use DatabaseMigrations;_4
EmbedsMany Relation
Jika Anda ingin menyematkan model, daripada mereferensikannya, Anda dapat menggunakan relasi Jenssegers\Mongodb\MongodbServiceProvider::class,41. Relasi ini mirip dengan relasi Jenssegers\Mongodb\MongodbServiceProvider::class,_38 tetapi menyematkan model di dalam objek induk
INGAT. Relasi ini mengembalikan koleksi Eloquent, mereka tidak mengembalikan objek pembuat kueri
use DatabaseMigrations;_5
Anda dapat mengakses model tersemat melalui properti dinamis
use DatabaseMigrations;_6
Hubungan terbalik tersedia secara otomatis. Anda tidak perlu mendefinisikan hubungan terbalik ini
use DatabaseMigrations;_7
Memasukkan dan memperbarui model tersemat berfungsi serupa dengan relasi ________2______38
use DatabaseMigrations;_8
Anda dapat memperbarui model tersemat menggunakan metode Jenssegers\Mongodb\MongodbServiceProvider::class,44 mereka (tersedia sejak rilis 2. 0. 0)
use DatabaseMigrations;_9
Anda dapat menghapus model tersemat dengan menggunakan metode Jenssegers\Mongodb\MongodbServiceProvider::class,45 pada relasi, atau metode Jenssegers\Mongodb\MongodbServiceProvider::class,46 pada model (tersedia sejak rilis 2. 0. 0)
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_0
Jika Anda ingin menambah atau menghapus model tersemat, tanpa menyentuh database, Anda dapat menggunakan metode Jenssegers\Mongodb\MongodbServiceProvider::class,47 dan Jenssegers\Mongodb\MongodbServiceProvider::class,48
Untuk akhirnya menulis perubahan ke database, simpan objek induk
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_1
Seperti relasi lainnya, embedsMany mengasumsikan kunci lokal relasi berdasarkan nama model. Anda dapat mengganti kunci lokal default dengan meneruskan argumen kedua ke metode embedsMany
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_2
Relasi yang disematkan akan mengembalikan Kumpulan item yang disematkan alih-alih pembuat kueri. Lihat operasi yang tersedia di sini. https. //laravel. com/docs/master/collections
EmbedsSatu Relasi
Relasi embedsOne mirip dengan relasi embedsMany, tetapi hanya menyematkan satu model
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_3
Anda dapat mengakses model tersemat melalui properti dinamis
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_4
Memasukkan dan memperbarui model tersemat berfungsi serupa dengan relasi ________2______49
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_5
Anda dapat memperbarui model tersemat menggunakan metode Jenssegers\Mongodb\MongodbServiceProvider::class,_44 (tersedia sejak rilis 2. 0. 0)
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_6
Anda bisa mengganti model tersemat dengan model baru seperti ini
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_7
Pembuat Kueri
Penggunaan Dasar
Driver basis data dihubungkan langsung ke pembuat kueri asli
Saat menggunakan koneksi MongoDB, Anda akan dapat membuat kueri yang lancar untuk melakukan operasi basis data
Demi kenyamanan Anda, ada Jenssegers\Mongodb\MongodbServiceProvider::class,_51 alias untuk Jenssegers\Mongodb\MongodbServiceProvider::class,52 serta beberapa operator/operasi khusus MongoDB tambahan
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_8
Jika Anda terbiasa dengan Eloquent Queries, ada fungsi yang sama
Operasi yang tersedia
Untuk melihat operasi yang tersedia, periksa bagian tersebut
Transaksi
Transaksi memerlukan versi MongoDB ^4. 0 serta penerapan set replika atau cluster yang dipecah. Anda dapat menemukan informasi lebih lanjut di dokumen MongoDB
Penggunaan Dasar
'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('DB_DSN'), 'database' => env('DB_DATABASE', 'homestead'), ],_9
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_0
Untuk membatalkan transaksi, panggil metode Jenssegers\Mongodb\MongodbServiceProvider::class,53 kapan saja selama transaksi
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_1
CATATAN. Transaksi di MongoDB tidak dapat disarangkan. DB. fungsi beginTransaction() akan memulai transaksi baru dalam sesi baru yang dibuat atau yang sudah ada dan akan menaikkan RuntimeException saat transaksi sudah ada. Lihat lebih lanjut di dokumen resmi MongoDB
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_2
Skema
Driver basis data juga memiliki dukungan pembuat skema (terbatas). Anda dapat dengan mudah memanipulasi koleksi dan mengatur indeks
Penggunaan Dasar
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_3
Anda juga dapat meneruskan semua parameter yang ditentukan ke parameter Jenssegers\Mongodb\MongodbServiceProvider::class,54
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_4
Operasi yang diwariskan
- membuat dan menjatuhkan
- koleksi
- hasCollection
- index dan dropIndex (indeks gabungan juga didukung)
- unik
Operasi spesifik MongoDB
- latar belakang
- jarang
- berakhir
- geospasial
Semua operasi (tidak didukung) lainnya diimplementasikan sebagai metode dummy pass-through karena MongoDB tidak menggunakan skema yang telah ditentukan sebelumnya
Baca lebih lanjut tentang pembuat skema aktif
Indeks geospasial
Indeks geospasial berguna untuk menanyakan dokumen berbasis lokasi
Mereka datang dalam dua bentuk. Jenssegers\Mongodb\MongodbServiceProvider::class,55 dan Jenssegers\Mongodb\MongodbServiceProvider::class,56. Gunakan pembuat skema untuk menambahkan ini ke koleksi
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_5
Untuk menambahkan indeks Jenssegers\Mongodb\MongodbServiceProvider::class,_56
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_6
Memperpanjang
Hubungan Lintas-Database
Jika Anda menggunakan pengaturan MongoDB dan SQL hibrid, Anda dapat menentukan hubungan di antara keduanya
Model akan secara otomatis mengembalikan relasi terkait MongoDB atau terkait SQL berdasarkan jenis model terkait
Jika Anda ingin fungsionalitas ini berfungsi dua arah, model SQL Anda harus menggunakan sifat Jenssegers\Mongodb\MongodbServiceProvider::class,58
Fungsionalitas ini hanya berfungsi untuk Jenssegers\Mongodb\MongodbServiceProvider::class,49, Jenssegers\Mongodb\MongodbServiceProvider::class,38 dan Jenssegers\Mongodb\MongodbServiceProvider::class,39
Model MySQL harus menggunakan sifat Jenssegers\Mongodb\MongodbServiceProvider::class,_62
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_7
Dalam model MongoDB Anda, Anda harus menentukan hubungannya
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_8
Autentikasi
Jika Anda ingin menggunakan fungsionalitas Auth asli Laravel, daftarkan penyedia layanan yang disertakan ini
'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'homestead'), 'username' => env('DB_USERNAME', 'homestead'), 'password' => env('DB_PASSWORD', 'secret'), 'options' => [ 'appname' => 'homestead', ], ],_9
Penyedia layanan ini akan sedikit memodifikasi DatabaseReminderRepository internal untuk menambahkan dukungan untuk pengingat kata sandi berbasis MongoDB
Jika Anda tidak menggunakan pengingat kata sandi, Anda tidak perlu mendaftarkan penyedia layanan ini dan yang lainnya akan berfungsi dengan baik
Antrian
Jika Anda ingin menggunakan MongoDB sebagai backend database Anda, ubah driver di Jenssegers\Mongodb\MongodbServiceProvider::class,63
use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_0
Jika Anda ingin menggunakan MongoDB untuk menangani pekerjaan yang gagal, ubah database di Jenssegers\Mongodb\MongodbServiceProvider::class,63
use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_1
Khusus Laravel
Tambahkan penyedia layanan di use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_7
use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_2
Spesifik lumen
Dengan Lumen, tambahkan penyedia layanan di use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }8. Namun Anda harus memastikan bahwa Anda menambahkan berikut setelah Jenssegers\Mongodb\MongodbServiceProvider::class,00 pendaftaran
use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_3
Perbaikan
Upgrade dari versi 2 ke 3
Dalam rilis utama baru yang mendukung ekstensi PHP MongoDB baru ini, kami juga memindahkan lokasi kelas Model dan mengganti kelas model MySQL dengan sebuah ciri
Harap ubah semua referensi Jenssegers\Mongodb\MongodbServiceProvider::class,_68 ke Jenssegers\Mongodb\MongodbServiceProvider::class,69 baik di bagian atas file model Anda atau alias terdaftar Anda
use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_4
Jika Anda menggunakan relasi hibrid, kelas MySQL Anda sekarang harus memperluas kelas model Eloquent asli Jenssegers\Mongodb\MongodbServiceProvider::class,70 alih-alih Jenssegers\Mongodb\MongodbServiceProvider::class,71 yang dihapus
Sebagai gantinya gunakan sifat Jenssegers\Mongodb\MongodbServiceProvider::class,_58 yang baru. Ini seharusnya memperjelas karena hanya ada satu kelas model tunggal dalam paket ini
use Jenssegers\Mongodb\Eloquent\Model; class Book extends Model { // }_5
Relasi tersemat kini mengembalikan Jenssegers\Mongodb\MongodbServiceProvider::class,_73, bukan kelas Koleksi kustom. Jika Anda menggunakan salah satu metode khusus yang tersedia, konversikan ke operasi Pengumpulan