AppServiceProvider.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace App\Providers;
  3. use Godruoyi\Snowflake\Snowflake;
  4. use Godruoyi\Snowflake\LaravelSequenceResolver;
  5. use App\Tools\QueryBuilderMacro;
  6. use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
  7. use Illuminate\Database\Eloquent\Relations\Relation;
  8. use Illuminate\Database\Query\Builder as QueryBuilder;
  9. use Illuminate\Support\ServiceProvider;
  10. class AppServiceProvider extends ServiceProvider
  11. {
  12. /**
  13. * Register any application services.
  14. *
  15. * @return void
  16. */
  17. public function register()
  18. {
  19. //雪花算法
  20. $this->app->singleton('snowflake', function () {
  21. return (new Snowflake(env('SNOWFLAKE_DATA_CENTER_ID'),env('SNOWFLAKE_WORKER_ID')))
  22. ->setStartTimeStamp(strtotime(config('database.snowflake.start'))*1000)
  23. ->setSequenceResolver(
  24. new LaravelSequenceResolver($this->app->get('cache')->store()
  25. ));
  26. });
  27. }
  28. /**
  29. * Bootstrap any application services.
  30. *
  31. * @return void
  32. */
  33. public function boot()
  34. {
  35. //
  36. QueryBuilder::mixin($queryBuilderMacro = $this->app->make(QueryBuilderMacro::class));
  37. EloquentBuilder::mixin($queryBuilderMacro);
  38. Relation::mixin($queryBuilderMacro);
  39. }
  40. }