Giao diện
MongoDB
Giới thiệu (Introduction)
MongoDB là document database phổ biến nhất hiện nay. Laravel hỗ trợ MongoDB chính thức qua package mongodb/laravel-mongodb — cho phép bạn sử dụng Eloquent models, query builder, migrations, và nhiều tính năng Laravel khác với MongoDB.
Cài đặt (Installation)
MongoDB Driver
Cài đặt PHP MongoDB extension:
bash
pecl install mongodbThêm vào php.ini:
ini
extension=mongodb.soKhởi chạy MongoDB Server
Sử dụng MongoDB Atlas (cloud) hoặc chạy local:
bash
# Docker
docker run -d -p 27017:27017 --name mongodb mongo:latestCài package
bash
composer require mongodb/laravel-mongodbCấu hình (Configuration)
Thêm connection trong config/database.php:
php
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel'),
],
],Hoặc qua .env:
env
DB_CONNECTION=mongodb
MONGODB_URI=mongodb://localhost:27017
MONGODB_DATABASE=laravel_appTính năng (Features)
Eloquent Models
Sử dụng MongoDB\Laravel\Eloquent\Model thay vì base Eloquent Model:
php
<?php
namespace App\Models;
use MongoDB\Laravel\Eloquent\Model;
class Flight extends Model
{
protected $connection = 'mongodb';
protected $collection = 'flights'; // Tên collection
}Query Builder
Hoạt động giống query builder thông thường:
php
use Illuminate\Support\Facades\DB;
$users = DB::connection('mongodb')
->collection('users')
->where('status', 'active')
->get();
$user = DB::connection('mongodb')
->collection('users')
->where('name', 'John')
->first();Relationships
Hỗ trợ Eloquent relationships:
php
// One-to-Many
class User extends Model
{
public function posts()
{
return $this->hasMany(Post::class);
}
}
// Embedded documents
class User extends Model
{
public function addresses()
{
return $this->embedsMany(Address::class);
}
}Schema / Migrations
php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\Schema;
use MongoDB\Laravel\Schema\Blueprint;
return new class extends Migration
{
protected $connection = 'mongodb';
public function up(): void
{
Schema::connection('mongodb')
->create('flights', function (Blueprint $collection) {
$collection->index('name');
$collection->unique('flight_number');
});
}
};Transactions
MongoDB 4.0+ hỗ trợ multi-document transactions:
php
DB::connection('mongodb')->transaction(function () {
User::create(['name' => 'Taylor']);
Flight::create(['name' => 'Flight 101']);
});Tính năng nâng cao
- Aggregation Pipeline — Xử lý dữ liệu phức tạp
- GridFS — Lưu trữ files lớn
- Full-Text Search — Tìm kiếm toàn văn
- Geospatial Queries — Truy vấn địa lý
- Change Streams — Theo dõi thay đổi realtime
GHI CHÚ
Xem thêm tại mongodb/laravel-mongodb documentation để biết chi tiết đầy đủ các tính năng.