AppDividend
Latest Code Tutorials

Laravel MongoDB CRUD Tutorial With Example

2,110

Get real time updates directly on you device, subscribe now.

Laravel MongoDB CRUD Tutorial With Example is the topic, we will discuss today. In this example, we will use jenssegers/mongodb Package. If You need to get more information, then Go To Github. If you are connecting MongoDB database to Laravel or any PHP application then you might face one issue and that is PHP MongoDB driver. The package, we will install in Laravel requires php mongodb driver installs on our machine. But if you try to download a direct package without installing the driver then you will face an error says that you have one extension missing in your PHP extension files or other errors depending on your configured environment. It is the most famous issue in this scenario. Luckily I have a best possible solution for you. So I will help you to connect your Laravel application to MongoDB database. So first, you need to go to this Link. I am assuming that you are using Windows.

https://pecl.php.net/package/mongodb/1.3.0/windows

Now, right now, I am using Windows 10 32Bit OS and my PHP version is 7.1. So you will choose the download file based on your machine configuration.

mongodb driver

Download the DLL Zip file and extract inside your PHP’s ext directory. That ext directory contains many DLL extensions file already. I am using XAMPP so, your directory path to the ext is C:\xampp\php\ext. The DLL file name of MongoDB driver is  php_mongodb.dll. So make sure that this file is properly installed in ext directory.

Now, open the php.ini file and add the following line. If the line is already there then check if it is commented or not, if commented then remove the semicolon to uncomment. In order to work with MongoDB, this driver needs to be bootstrap at the start of the server.

extension=php_mongodb.dll

Save that file.

Please restart the server. It is very important otherwise our changes will not reflect. Now, you will be able to connect your PHP application to the MongoDB database. In our case, it is Laravel MongoDB connection. Now, we will be able to start our Laravel MongoDB CRUD Tutorial With Example.

Laravel MongoDB CRUD Tutorial

We are going to Configure Laravel Project.

Step 1: Install Laravel Project

Download New Laravel Project by the writing following command.

composer create-project --prefer-dist laravel/laravel laravelmongodb

Step 2: Configure MongoDB Database

So now let’s configure MongoDB Database in our laravel application. So open .env file add the following detail.

//.env

MONGO_DB_HOST=127.0.0.1
MONGO_DB_PORT=27017
MONGO_DB_DATABASE=mongocrud
MONGO_DB_USERNAME=
MONGO_DB_PASSWORD=

Next, we want to add a new mongodb connection on config >> database.php file.

//database.php

'connections' => [


        ......
     'mongodb' => [
            'driver'   => 'mongodb',
            'host'     => env('MONGO_DB_HOST', 'localhost'),
            'port'     => env('MONGO_DB_PORT', 27017),
            'database' => env('MONGO_DB_DATABASE'),
            'username' => env('MONGO_DB_USERNAME'),
            'password' => env('MONGO_DB_PASSWORD'),
            'options'  => []
        ],
    ]

Step 3: Install Laravel MongoDB Package

Now we will install jenssegers/mongodb Package in our project.

composer require jenssegers/mongodb

Step 4: Define providers

Find the providers in config >> app.php file and register the MongodbServiceProvider.

'providers' => [
		Jenssegers\Mongodb\MongodbServiceProvider::class,
	       ]

Step 5: Create a model

Type the following command in your terminal.

php artisan make:model Car

It will create a Car.php file.

Package includes a MongoDB enabled Eloquent class that you can use to establish models for corresponding collections. Add the code in Car.php file.

//Car.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class Car extends Eloquent
{
    protected $connection = 'mongodb';
    protected $collection = 'cars';
    
    protected $fillable = [
        'carcompany', 'model','price'
    ];
}

Step 6: Create a view file

Create a file in resources  >>  views  >>   carcreate.blade.php and put this following code in it.

<!-- carcreate.blade.php -->

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Laravel MongoDB CRUD Tutorial With Example</title>
    <link rel="stylesheet" href="{{asset('css/app.css')}}">
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">  
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>  
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  
  </head>
  <body>
    <div class="container">
      <h2>Laravel MongoDB CRUD Tutorial With Example</h2><br/>
      <div class="container">
    </div>
      <form method="post" action="{{url('add')}}">
        @csrf
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <label for="Carcompany">Car Company:</label>
            <input type="text" class="form-control" name="carcompany">
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <label for="Model">Model:</label>
            <input type="text" class="form-control" name="model">
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <label for="Price">Price:</label>
            <input type="text" class="form-control" name="price">
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <button type="submit" class="btn btn-success">Submit</button>
          </div>
        </div>
      </form>
   </div>
  </body>
</html>

Step 7: Create one controller and route

php artisan make:controller CarController

It will create a controller file called CarController.php.

We register route in routes  >>  web.php file. So let us do it.

//web.php

Route::get('add','CarController@create');
Route::post('add','CarController@store');
Route::get('car','CarController@index');
Route::get('edit/{id}','CarController@edit');
Route::post('edit/{id}','CarController@update');
Route::delete('{id}','CarController@destroy');

Add code to create() function to display view.

//CarController.php

public function create()
    {
        return view('carcreate');
    }

 Step 8: Save Data into MongoDB Database

We need to code the store function to save the data in the database.

Related Posts
1 of 37
//CarController.php

use App\Car;

   public function store(Request $request)
    {
        $car = new Car();
        $car->carcompany = $request->get('carcompany');
        $car->model = $request->get('model');
        $car->price = $request->get('price');        
        $car->save();
        return redirect('car')->with('success', 'Car has been successfully added');
    }

Laravel MongoDB CRUD Tutorial

Step 9: Make an index page to list the Car                              Information

For that, frontend, we need to send the data to the carindex.blade.php. So, in CarController.php file, we need to write the code to get the data and return it to the index view.

//PostController.php

public function index()
    {
        $cars=Car::all();
        return view('carindex',compact('cars'));
    }

In resources >> views create a different blade file called carindex.blade.php file and place the following code in it.

<!-- carindex.blade.php -->

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Index Page</title>
    <link rel="stylesheet" href="{{asset('css/app.css')}}">
  </head>
  <body>
    <div class="container">
    <br />
    @if (\Session::has('success'))
      <div class="alert alert-success">
        <p>{{ \Session::get('success') }}</p>
      </div><br />
     @endif
    <table class="table table-striped">
    <thead>
      <tr>
        <th>ID</th>
        <th>Company</th>
        <th>Model</th>
        <th>Price</th>
        <th colspan="2">Action</th>
      </tr>
    </thead>
    <tbody>
      
      @foreach($cars as $car)
      <tr>
        <td>{{$car->id}}</td>
        <td>{{$car->carcompany}}</td>
        <td>{{$car->model}}</td>
        <td>{{$car->price}}</td>
        <td><a href="{{action('CarController@edit', $car->id)}}" class="btn btn-warning">Edit</a></td>
        <td>
          <form action="{{action('CarController@destroy', $car->id)}}" method="post">
            @csrf
            <input name="_method" type="hidden" value="DELETE">
            <button class="btn btn-danger" type="submit">Delete</button>
          </form>
        </td>
      </tr>
      @endforeach
    </tbody>
  </table>
  </div>
  </body>
</html>

So, if you type the URL:http://localhost:8000/car  you can see the page like below image.

Laravel MongoDB CRUD Example

Step 10: Build an edit view for updating the Car                         Information

Next step will be to call the edit function in CarController.php file and add the following code to it.

public function edit($id)
    {
        $car = Car::find($id);
        return view('caredit',compact('car','id'));
    }

Now, make an caredit.blade.php file inside resources  >>  views folder.

<!-- caredit.blade.php -->

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Laravel MongoDB CRUD Tutorial With Example</title>
    <link rel="stylesheet" href="{{asset('css/app.css')}}">
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">  
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>  
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>  
  </head>
  <body>
    <div class="container">
      <h2>Edit A Form</h2><br/>
      <div class="container">
    </div>
      <form method="post" action="{{action('CarController@update', $id)}}">
        @csrf
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <label for="Carcompany">Car Company:</label>
            <input type="text" class="form-control" name="carcompany" value="{{$car->carcompany}}">
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <label for="Model">Model:</label>
            <input type="text" class="form-control" name="model" value="{{$car->model}}">
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <label for="Price">Price:</label>
            <input type="text" class="form-control" name="price" value="{{$car->price}}">
          </div>
        </div>
        <div class="row">
          <div class="col-md-4"></div>
          <div class="form-group col-md-4">
            <button type="submit" class="btn btn-success">Update</button>
          </div>
        </div>
      </form>
   </div>
  </body>
</html>

Next move will be to add some code in the update() function.

//CarController.php

public function update(Request $request, $id)
    {
        $car= Car::find($id);
        $car->carcompany = $request->get('carcompany');
        $car->model = $request->get('model');
        $car->price = $request->get('price');        
        $car->save();
        return redirect('car')->with('success', 'Car has been successfully update');
    }

laravel mongodb tutorial

Step 11: Delete the Car Information

//CarController.php

public function destroy($id)
    {
        $car = Car::find($id);
        $car->delete();
        return redirect('car')->with('success','Car has been  deleted');
    }

Final Code of CarController.php looks like below code.

//CarController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Car;

class CarController extends Controller
{
    public function create()
    {
        return view('carcreate');
    }
    public function store(Request $request)
    {
        $car=new Car();
        $car->carcompany = $request->get('carcompany');
        $car->model = $request->get('model');
        $car->price = $request->get('price');        
        $car->save();
        return redirect('car')->with('success', 'Car has been successfully added');
    }
    public function index()
    {
        $cars=Car::all();
        return view('carindex',compact('cars'));
    }
    public function edit($id)
    {
        $car = Car::find($id);
        return view('caredit',compact('car','id'));
    }
    public function update(Request $request, $id)
    {
        $car= Car::find($id);
        $car->carcompany = $request->get('carcompany');
        $car->model = $request->get('model');
        $car->price = $request->get('price');        
        $car->save();
        return redirect('car')->with('success', 'Car has been successfully update');
    }
    public function destroy($id)
    {
        $car = Car::find($id);
        $car->delete();
        return redirect('car')->with('success','Car has been  deleted');
    }
}

Finally, Our Laravel MongoDB CRUD Tutorial With Example is over. Thanks for taking.

3 Comments
  1. Amalendu kar says

    Thank you so much..

  2. Pawan sai says

    Which one will be the default page.

  3. Ahmad says

    thank you so much. this helps a lot

Leave A Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.