MongoDB is a popular NoSQL database that offers flexibility and scalability when handling modern web applications. Laravel is a powerful PHP framework known for its elegant syntax and rich ecosystem for building web applications. Combining Laravel with MongoDB provides a robust and efficient way for Laravel developers to build modern web applications.
Laravel developers can take advantage of MongoDB’s powerful features through the official MongoDB PHP driver and the mongodb/laravel-mongodb package. This package enables Laravel applications to use MongoDB with Eloquent, Laravel’s ORM, and provides integration for caching, queued jobs, and file storage with GridFS.
Contents
Steps to Integrate MongoDB with Laravel:
Step 1: Install MongoDB PHP extension
Use the below command to install the MongoDB PHP extension
1 |
pecl install mongodb |
Verify extension using the below command
1 |
php -m | grep mongodb |
Step 2: Starting MongoDB Server
MongoDB Community Server can run locally on Windows, macOS, and Linux, or in Docker containers. Follow the (https://www.mongodb.com/docs/manual/installation/) to get started.
Configure your .env file for local or cloud-hosted MongoDB:
1 2 |
MONGODB_URI="mongodb://localhost:27017" MONGODB_DATABASE="laravel_app" |
Step 3: Install the Laravel MongoDB Package
To install the Laravel MongoDB package, use the following command:
1 |
composer require mongodb/laravel-mongodb |
Configuration in Laravel
Go to config/database.php and add a new MongoDB Connection:
1 2 3 4 5 6 7 |
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'), 'database' => env('MONGODB_DATABASE', 'laravel_app'), ], ], |
Using MongoDB with Laravel
Eloquent Models with MongoDB Collections
1 2 3 4 5 6 7 |
use Jenssegers\Mongodb\Eloquent\Model as Eloquent; class Post extends Eloquent { protected $connection = 'mongodb'; protected $collection = 'posts'; } |
Query Builder and Raw Queries
1 |
$posts = Post::where('status', 'published')->get(); |
Cache with MongoDB Cache Driver
1 |
Cache::put('key', 'value', 60); |
Queue Jobs with MongoDB Queue Driver
You can queue jobs using MongoDB as a queue driver, enabling you to dispatch and process jobs efficiently.
File Storage with GridFS
MongoDB’s GridFS can store large files, such as images or videos, by breaking them into smaller chunks. Laravel’s GridFS Adapter integrates seamlessly with MongoDB for this purpose.
1 |
Storage::disk('gridfs')->put('file.txt', 'File content'); |
Example Application: Basic CRUD with MongoDB and Laravel
Step 1: Define a Model
Define a Post model connected to MongoDB:
1 2 3 4 5 6 7 8 |
use Jenssegers\Mongodb\Eloquent\Model as Eloquent; class Post extends Eloquent { protected $connection = 'mongodb'; protected $collection = 'posts'; protected $fillable = ['title', 'content', 'status']; } |
Step 2: Create a Controller
Set up a PostController to handle CRUD operations.
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 |
use App\Models\Post; class PostController extends Controller { public function create(Request $request) { $post = Post::create($request->all()); return response()->json($post); } public function read($id) { $post = Post::find($id); return response()->json($post); } public function update(Request $request, $id) { $post = Post::find($id); $post->update($request->all()); return response()->json($post); } public function delete($id) { Post::destroy($id); return response()->json('Post deleted successfully'); } } |
Step 3: Set up Routes
Define routes for the CRUD operations in routes/web.php:
1 2 3 4 |
Route::post('/post', [PostController::class, 'create']); Route::get('/post/{id}', [PostController::class, 'read']); Route::put('/post/{id}', [PostController::class, 'update']); Route::delete('/post/{id}', [PostController::class, 'delete']); |
Conclusion:
By leveraging the features of Laravel and MongoDB, you can build flexible and scalable web applications. For any queries or doubts, share it with me through the comment box. Share the tutorial with your friends to help them learn about integrating MongoDB with Laravel.
Happy Coding!