Skip to main content

Repository Trait

Accessing repositories from any class can be done by using RepositoryTrait trait in your desired class.

Example#

app\Http\Controllers\UsersControllers.php
<?php
namespace App\Http\Controllers;
use HZ\Illuminate\Mongez\Traits\RepositoryTrait;
class UsersControllers extends Controller
{
use RepositoryTrait;
/**
* {@inheritDoc}
*/
public function index()
{
// now use the property to access the repository and append `Repository` keyword after the repository alias
$users = $this->usersRepositry->list([
'status' => 'active',
]);
}
}

The syntax here is to write down the repository alias name and append Repository keyword after the repository alias name located in the config/mongez.php.

config/mongez.php
/*
|--------------------------------------------------------------------------
| Application Repositories
|--------------------------------------------------------------------------
|
| The repositories section will be mainly used for records retrieval... fetching records from database
| It will also be responsible for inserting/updating and deleting from database
|
*/
'repositories' => [
// add your repositories here
// 'repo-alias-name' => RepositoryClassPath::class,
'users' => App\Modules\Users\Repositories\UsersRepository::class,
'usersGroups' => App\Modules\Users\Repositories\UsersGroupsRepository::class,
// Auto generated repositories here: DO NOT remove this line.
],

This is exactly alais to the repo helper function.

app\Http\Controllers\UsersControllers.php
<?php
namespace App\Http\Controllers;
class UsersControllers extends Controller
{
/**
* {@inheritDoc}
*/
public function index()
{
$users = repo('users')->list([
'status' => 'active',
]);
}
}
Please Note

All Repositories, base controllers and resources implement the repository trait by default so you can access any repositorty from anywhere. ::