In this case, we can use jenssegers/mongodb bundle. in case you are connecting mongodb database to laravel or any personal home page application you then might face one trouble and that is php mongodb motive force. the package, we can install in laravel requires Hypertext Preprocessor mongodb motive force installs on our device. but if you try to down load a direct package deal with out installing the motive force then you may face an blunders says that you have one extension lacking to your php extension documents or different mistakes relying for your configured surroundings. it is the maximum famous trouble on this situation. luckily i have a exceptional possible solution for you. so i will help you to attach your laravel software to mongodb database. so first, you want to go to this hyperlink. i am assuming which you are the use of windows.
https://pecl.php.net/package/mongodb/1.3.0/windows
We are going to Configure Laravel Project.
Download New Laravel Project by the writing following command.
composer create-project --prefer-dist laravel/laravel laravelmongodb
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=mongo
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' => []
],
]
Now we will install jenssegers/mongodb Package in our project.
composer require jenssegers/mongodb
Find the providers in config >> app.php file and register the MongodbServiceProvider.
'providers' => [
Jenssegers\Mongodb\MongodbServiceProvider::class,
]
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'
];
}
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>DDKits Laravel MongoDB 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>DDKits Laravel MongoDB 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>
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');
}
We need to code the store function to save the data in the database.
//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');
}
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.
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>DDKits Laravel MongoDB 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');
}
//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