Bisakah laravel bekerja dengan mongodb?

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

Bagaimana cara menghubungkan proyek Laravel dengan MongoDB?

Langkah selanjutnya adalah membuat konfigurasi untuk koneksi Laravel MongoDB. Untuk melakukannya, buka proyek di editor teks atau IDE favorit Anda dan temukan file config/database. file php. Di dalam file itu, Anda akan melihat sebuah array bernama koneksi

Bagaimana cara menginstal MongoDB di Laravel?

Menginstal MongoDB di Proyek Laravel .
Langkah 1. Instal repositori. .
Langkah 2. Selanjutnya, jalankan komponen untuk menginstal Jenssegers/MongoDB
Langkah 3. Sertakan penyedia layanan
Langkah 4. Tambahkan yang berikut ini ke daftar penyedia layanan Anda di config/app. .
Langkah 5. Menginstal pengaturan Database. .
Langkah 6. Menyiapkan

Bagaimana cara mendapatkan data dari MongoDB menggunakan Laravel?

Anda dapat melakukannya dengan perintah berikut. .
pecl instal mongodb. .
cp /opt/homebrew/Cellar/pcre2/10. 36/include/pcre2. h /opt/homebrew/Cellar/php\@7. */7. *. */include/php/ext/pcre/pcre2. h. .
komposer buat-proyek laravel/laravel laravel-mongodb. .
cd laravel-mongodb. .
php tukang melayani. .
komposer memerlukan jenssegers/mongodb

Bisakah MongoDB digunakan dengan php?

Anda dapat menambahkan driver ke aplikasi Anda untuk bekerja dengan MongoDB di PHP . Driver PHP MongoDB terdiri dari dua komponen berikut. Ekstensi , yang menyediakan API tingkat rendah dan terutama berfungsi untuk mengintegrasikan libmongoc dan libbson dengan PHP.