DistSlugTrait.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Traits;
  3. use ArrayAccess;
  4. use Illuminate\Database\Eloquent\Builder;
  5. use Illuminate\Database\Eloquent\SoftDeletingScope;
  6. use Illuminate\Support\Facades\Event;
  7. use InvalidArgumentException;
  8. use Spatie\EloquentSortable\EloquentModelSortedEvent;
  9. use Spatie\EloquentSortable\Sortable;
  10. /*
  11. * slug
  12. */
  13. trait DistSlugTrait
  14. {
  15. /*
  16. * 生成slug
  17. */
  18. public static function generateSlug($slug) {
  19. $self = new self();
  20. $model = $self->model();
  21. $slug = generateSlug($slug);
  22. for ($i=0;$i<5;$i++) {
  23. $count = $model->where('slug', $slug)->where('dist_id', getDistributorId())->count();
  24. if ($count == 0) {
  25. return $slug;
  26. } else {
  27. $slug = $slug . '-' . generateRandomString();
  28. }
  29. }
  30. return $slug . '-' . generateRandomString(5);
  31. }
  32. public static function isRepeatedSlug($id,$slug) {
  33. $id = intval($id);
  34. $self = new self();
  35. $model = $self->model();
  36. $count = $model->where('id','!=',$id)->where('slug', $slug)->where('dist_id', getDistributorId())->count();
  37. if ($count > 0) {
  38. return true;
  39. } else {
  40. return false;
  41. }
  42. }
  43. }