Skip to content

dahabit/Laravel-MongoDB

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Eloquent MongoDB Build Status

An Eloquent model that supports MongoDB.

Installation

Add the package to your composer.json or install manually.

{
    "require": {
        "jenssegers/mongodb": "*"
    }
}

Run composer update to download and install the package.

Add the service provider in app/config/app.php:

'Jenssegers\Mongodb\MongodbServiceProvider',

Usage

Tell your model to use the MongoDB model and a MongoDB collection:

use Jenssegers\Mongodb\Model as Eloquent

class MyModel extends Eloquent {

    protected $collection = 'mycollection';

}

Configuration

The model will automatically check the Laravel database configuration array in app/config/database.php for a 'mongodb' item.

'mongodb' => array(
    'host'     => 'localhost',
    'port'     => 27017,
    'database' => 'database',
),

You can also specify the connection name in the model:

class MyModel extends Eloquent {

    protected $connection = 'mongodb2';

}

Examples

Retrieving All Models

$users = User::all();

Retrieving A Record By Primary Key

$user = User::find('517c43667db388101e00000f');

Wheres

$users = User::where('votes', '>', 100)->take(10)->get();

Or Statements

$users = User::where('votes', '>', 100)->orWhere('name', 'John')->get();

Using Where In With An Array

$users = User::whereIn('age', array(16, 18, 20))->get();

Using Where Between

$users = User::whereBetween('votes', array(1, 100))->get();

Where null

$users = User::whereNull('updated_at')->get();

Order By

$users = User::orderBy('name', 'desc')->get();

Offset & Limit

$users = User::skip(10)->take(5)->get();

Distinct

Distinct requires a field for which to return the distinct values.

$users = User::distinct()->get(array('name'));
// or
$users = User::distinct('name')->get();

Distinct can be combined with where:

 $users = User::where('active', true)->distinct('name')->get();

Advanced Wheres

$users = User::where('name', '=', 'John')->orWhere(function($query)
        {
            $query->where('votes', '>', 100)
                  ->where('title', '<>', 'Admin');
        })
        ->get();

Group By

Selected columns that are not grouped will be aggregated with the $last function.

$users = Users::groupBy('title')->get(array('title', 'name'));

Aggregation

$total = Order::count();
$price = Order::max('price');
$price = Order::min('price');
$price = Order::avg('price');
$total = Order::sum('price');

Aggregations can be combined with where:

$sold = Orders::where('sold', true)->sum('price');

Like

$user = Comment::where('body', 'like', '%spam%')->get();

Inserts, updates and deletes

All basic insert, update, delete and select methods should be implemented. Feel free to fork and help completing this library!

About

An Eloquent model that supports MongoDB

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published