littlebug / laravel-repository
The repository mode for laravel!
Installs: 3 936
Dependents: 0
Suggesters: 0
Security: 0
Stars: 35
Watchers: 3
Forks: 7
Open Issues: 0
Requires
- php: >=7.0.0
- ext-json: *
Requires (Dev)
- laravel/framework: 5.8.*
- phpunit/phpunit: ~6.5
README
εζ’δΈζ | Usage of Repository
Introduction
laravel-repository
provides the basic repository
class for laravel
model The package was made to provide more
More external methods, and more friendly editor prompts; layering the code, repository
is
responsible for external business logic processing, model
is only responsible for the definition
of the fields, attributes, query conditions, and return values of the data table. It does not
participate in specific logical operations, and does not serve the control layer.
Relative to the direct use of model
advantages:
- Solve the problem that
model
does not automatically handle extra fields when adding or modifying - Optimize chained calls for
model
queries, query directly using arrays - Automatically process corresponding associated data queries through query conditions and query fields
- Provides a more friendly editor prompt
Install
Installation requirements
- PHP >= 7.0.0
- Laravel >= 5.5.0
1.1 Install package
composer require littlebug/laravel-repository:2.0.*
or add this to require section in your composer.json file:
"littlebug/laravel-repository": "2.0.*"
then run composer update
1.2 Use the command to generate model
and repository
Suppose you have users in your database, or you replace users with the table names in your database.
php artisan core:model --table=users --name=User
The command will be at:
- Generate
User
file underapp/Models/
file - Generate
UserRepository
file underapp/Repositories/
file
1.3 Using repository
in the controller
<?php use Illuminate\Routing\Controller; use Littlebug\Repository\Tests\Stubs\UserRepository; class UsersController extends Controller { /** * @var UserRepository */ private $userRepository; public function __construct(UserRepository $userRepository) { $this->userRepository = $userRepository; } public function index() { // Paging queries, returning paging objects $paginate = $this->userRepository->paginate([ 'name:like' => 'test', 'status' => [1, 2], // Automatically converts to an in query, // Add complex queries and generate SQL: ("users"."status" = ? or "users"."age" >= ? or ("users"."status" = ? and "users"."age" != ?)) // More instructions: https://wanchaochao.github.io/laravel-repository/?page=repository#5.3-%E9%A2%84%E5%AE%9A%E4%B9%89%E5%AD%97%E6%AE%B5%E6%9F%A5%E8%AF%A2 'or' => [ 'status' => 1, 'age:gte' => 26, 'and' => [ 'status' => 1, 'age:neq' => 24, ], ], ], [ 'user_id', 'username', // Statistical associated data; withCount 'posts_count', // Query the field information for the association table if the model defines the association relationship 'ext' => [ 'user_id', 'ext_avatar', ], ]); return view('users.index', compact('paginate')); } public function create() { // Add data and return an array $user = $this->userRepository->create(request()->all()); dump($user); } public function update() { // Modify the data and return the number of modified rows $row = $this->userRepository->update(request()->input('id'), request()->all()); dump($row); } public function delete() { // Deletes data and returns the number of rows deleted $row = $this->userRepository->delete(request()->input('id')); dump($row); } }
In addition to the injection method invocation described above, you can also use static method invocation; As follows:
use Littlebug\Repository\Tests\Stubs\UserRepository; $paginate = UserRepository::instance()->paginate(['status' => 1]); // Query a piece of data and return an array $user = UserRepository::instance()->find(['status' => 1, 'id:gt' => 2]);
1.4 Other common methods
Retrieve the data
Statistical query
Create or modify data
1.5 More documentation
Please check more about repository
More code generation commands
Commands support specifying database connections such as --table=dev.users
-
core:model
generatesmodel
class files andrepository
class files by querying database table information.php artisan core:model --table=users --name=User
-
core:repository
generates therepository
class filephp artisan core:repository --model=User --name=UserRepository
-
core:request
generatesrequest
verification class file by querying database table informationphp artisan core:request --table=users --path=Users