Create a fresh Laravel Installation.
composer create-project --prefer-dist laravel/laravel blog
Setup application key
php artisan key:generate
Run application in browser
php artisan serv
Follow this for installing MongoDB.
Install composer package in Laravel
composer require jenssegers/mongodb
Add this in config/app.php
Jenssegers\Mongodb\MongodbServiceProvider::class, Jenssegers\Mongodb\Auth\PasswordResetServiceProvider::class,
Configuration
Add this in your .env
DB_MDB_CONNECTION=mongodb DB_MDB_HOST=127.0.0.1 DB_MDB_PORT=27017 DB_MDB_DATABASE=mcart DB_MDB_USERNAME= DB_MDB_PASSWORD=
Modify your config/database.php. Full code given below
<?php return [ /* |-------------------------------------------------------------------------- | Default Database Connection Name |-------------------------------------------------------------------------- | | Here you may specify which of the database connections below you wish | to use as your default connection for all database work. Of course | you may use many connections at once using the Database library. | */ 'default' => env('DB_MDB_CONNECTION', 'mongodb'), /* |-------------------------------------------------------------------------- | Database Connections |-------------------------------------------------------------------------- | | Here are each of the database connections setup for your application. | Of course, examples of configuring each database platform that is | supported by Laravel is shown below to make development simple. | | | All database work in Laravel is done through the PHP PDO facilities | so make sure you have the driver for your particular database of | choice installed on your machine before you begin development. | */ 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', ], 'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_MDB_HOST', 'localhost'), 'port' => env('DB_MDB_PORT', 27017), 'database' => env('DB_MDB_DATABASE'), 'username' => env('DB_MDB_USERNAME'), 'password' => env('DB_MDB_PASSWORD'), 'options' => [ 'database' => 'admin' ] ], ], /* |-------------------------------------------------------------------------- | Migration Repository Table |-------------------------------------------------------------------------- | | This table keeps track of all the migrations that have already run for | your application. Using this information, we can determine which of | the migrations on disk haven't actually been run in the database. | */ 'migrations' => 'migrations', /* |-------------------------------------------------------------------------- | Redis Databases |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also | provides a richer set of commands than a typical key-value systems | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' => [ 'client' => 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ];
Install MongoDB PHP extension
sudo apt-get install php7.1-mongodb
Replace php7.1 with your version of PHP.
Create a Model
php artisan make:model Moloquent
Modify it as follows
<?php namespace App; use Jenssegers\Mongodb\Eloquent\Model; /** * Base Model for monogodb */ class Moloquent extends Model { }
Delete all the migrations and create following migrations
php artisan make:migration create_users_index
Open users index migration and modify code as follows
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Migrations\Migration; class CreateUsersIndex extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function ($collection) { $collection->index('user_id'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('users', function ($collection) { $collection->dropIndex('user_id'); }); } }
Create another migration:
php artisan make:migration create_password_resets_index
Add following code in it
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Migrations\Migration; class CreatePasswordResetsIndex extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('password_resets', function($collection) { $collection->index('email'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('password_resets', function ($collection) { $collection->dropIndex('email'); }); } }
Change code of User Model as follows
<?php namespace App; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Auth\Authenticatable as AuthenticableTrait; class User extends Moloquent implements Authenticatable { use Notifiable; use AuthenticableTrait; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; }
Run Migration
php artisan migrate
Generate Laravel’s default auth
php artisan make:auth
Run the applicaton
php artisan serve
So you are ready with Laravel with MongoDB with User authentication working.