jetbox/laravel-repository

v0.1.6 2024-05-13 12:58 UTC

This package is auto-updated.

Last update: 2024-09-13 13:41:06 UTC


README

Laravel Repository - Social Image

Laravel 版本支持

  • ^5.5 ^6.0 ^7.0 ^8.0 ^9.0 ^10.0 ^11.0

PHP 版本支持

  • ^7.0 ^8.0

Latest Stable Version Total Downloads Latest Unstable Version License

Daily Downloads Monthly Downloads Total Downloads

Issues Stars Forks

目录

安装

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);