jetbox / laravel-repository
Laravel 仓库包
v0.1.6
2024-05-13 12:58 UTC
Requires
- php: ^7.0|^8.0
- laravel/framework: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
README
Laravel 版本支持
-
^5.5
^6.0
^7.0
^8.0
^9.0
^10.0
^11.0
PHP 版本支持
-
^7.0
^8.0
目录
安装
Composer
执行以下命令以获取软件包的最新版本
composer require jetbox/laravel-repository
仓库安装
php artisan repository:install
创建仓库
创建一个新的 Eloquent 模型仓库类
php artisan make:repository UserRepository
方法
JetBox\Repositories\Contracts\RepositoryInterface
- get($columns = ['*'], $take = false, $pagination = false, $where = false);
- all($columns = ['*']);
- take($take, $columns = ['*']);
- paginate($perPage = false, $columns = ['*']);
- withPaginate($relations, $columns = ['*'], $paginate = 15);
- simplePaginate($perPage = false, $columns = ['*']);
- limit($take, $columns = ['*']);
- find($id, $columns = ['*']);
- findMany($ids, $columns = ['*']);
- findOrFail($id, $columns = ['*']);
- first($columns = ['*']);
- firstOrFail($columns = ['*']);
- where($column, $value = null, $columns = ['*']);
- whereOrFail($column, $value = null, $columns = ['*']);
- whereAll($column, $value = null, $columns = ['*']);
- whereWithAll($column, $value = null, $relations, $columns = ['*']);
- whereBetween($column, $value = [], $columns = ['*']);
- with($relations, $columns = ['*']);
- withCount($relations, $columns = ['*']);
- pluck($column, $key = null);
- create(array $attributes);
- forceCreate(array $attributes);
- update(array $attributes, $model, bool $tap = false, bool $forceFill = false);
- updateForce(array $attributes, $model, bool $tap = false);
- delete($model, bool $tap = false, bool $forceDelete = false);
- forceDelete($model, bool $tap = false);
- querySortable(string $orderByColumn, string $orderByDirection)
助手函数
- lLog(string $message, string $log = 'info', array $context = [], string $disk = null)
- is_json(string $str, bool $returnData = false)
- currentUser(): ?Authenticatable
- numberFormatShort($n, int $precision = 2)
环境特性
use JetBox\Repositories\Traits\EnvironmentTrait
- changeEnvironmentVariable(string $key, $value): void
- environmentVariableAllUpdate(array $data): void
可翻译的
use JetBox\Repositories\Traits\Translatable
- withTranslations(Builder $query, $locales = null, $fallback = true): void
- getTranslated($attribute, $locale = null, $fallback = true)
文件外观
- JetBoxFile::save(string $path, object $file, string $fileName = null, array $options = [])
- JetBoxFile::delete(Model $model, string $field, string $path)
- JetBoxFile::numberFormatSizeUnits(int $sizeInBytes)
常量
- AppConstants::permissions(): array
- AppConstants::roles(): array
- AppConstants::status(): array
namespace App\Constants; use JetBox\Repositories\Constants\AppConstants as BaseAppConstants; final class AppConstants extends BaseAppConstants { const ROLE_VISITOR = 'visitor'; const ROLE_EDITOR = 'editor'; const PERMISSION_VIEW_BLOG = 'view_blog'; }
用法
创建仓库
推荐缩短
Laravel
^5.7
^6.0
^7.0
^8.0
如果您的模型没有自动链接到仓库,您可以覆盖仓库的$model
属性
namespace App\Repositories; class UserRepository extends AbstractRepository { }
或者
Laravel
^5.2
<=5.6
覆盖$model
属性
namespace App\Repositories; use App\Models\User; class UserRepository extends AbstractRepository { /** * @var string */ protected $model = User::class; /** * Global OrderBy Column * @var string */ public $orderByColumn = 'created_at'; /** * Global OrderBy Direction * @var string */ public $orderByDirection = 'desc'; }
使用方法
namespace App\Http\Controllers; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\View\View; use App\Repositories\UserRepository as UserR; class UserController extends BaseController { /** * @var $users */ protected $users; /** * UserController constructor. * @param UserR $users */ public function __construct(UserR $users) { $this->users = $users; } /** * @return Application|Factory|View */ public function index() { $users = $this->users->all(); return view('users', compact('users')); } }
在仓库中查找所有结果
$users = $this->users->all();
通过 id 查找结果
$user = $this->users->find($id);