luuka / laravel-base-repository
该包的最新版本(v1)没有可用的许可信息。
一个简单的包,用于为Laravel创建make:repository命令
v1
2024-03-27 10:23 UTC
Requires
- php: >=5.4.0
README
一个简单的包,用于为Laravel 5及以上版本添加php artisan make:repository
命令
安装
使用以下命令使用composer安装此包
composer require luuka/laravel-base-repository --dev
或者将以下内容添加到composer.json的require-dev部分并运行composer update
"require-dev": { "luuka/laravel-base-repository": "*" }
用法
php artisan make:repository your-repository-name
示例
php artisan make:repository UserRepository
或
php artisan make:repository Backend/UserRepository
上述操作将在app目录内创建一个repositories目录。
一旦生成了仓库,请添加您的模型类并在模型函数中返回它,
示例
<?php
namespace Luuka;
use Luuka\LaravelBaseRepository\Repository\BaseRepository;
//use Your Model
/**
* Class UserRepository.
*/
class UserRepository extends BaseRepository
{
/**
* @return string
* Return the model
*/
public function model()
{
//return YourModel::class
}
}
在创建新的仓库类之后,您需要在模型类中将BaseModel继承在model()函数中绑定。BaseModel看起来像
<?php
namespace Luuka\LaravelBaseModel\Model;
use Luuka\Traits\Filterable;
use Luuka\Traits\Sortable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
use HasFactory;
use Filterable, Sortable;
}
BaseModel使用了来自traits的两个范围函数:scopeFilter和scopeSort。也许您以后需要使用它。在创建每个新模型时,您扩展BaseModel
<?php
namespace App\Models;
use Luuka\LaravelBaseModel\Model\BaseModel;
class YourModel extends BaseModel
{
// Filter with variable
protected $filterable = ['name'];
// Sort with variable;
protected $sortable = ['name' => 'desc'];
// Custom filter
public function filterSearch($query, $value)
{
return $query->where('name', 'LIKE', '%' . $value . '%');
}
// Custom sorts
public function sortName($query)
{
return $query->orderBy('name', 'desc');
}
}
<form action="your_url" method="POST/GET">
// Filter by name with name prefix
<input type="text" name="search" placeholder="search by name">
<button>Submit</button>
</form>
基本用法
<?php
namespace App\Http\Controllers\Backend;
use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use Illuminate\Http\Request;
class SettingController extends Controller
{
protected $userRepository;
public function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function index(Request $request)
{
$users = $this->userRepository->getAll($request->all());
return view('backend.pages.users.index', compact('users'));
}
}