DistSlugTrait.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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,$id=0) {
  19. $self = new self();
  20. $model = $self->model();
  21. $slug = generateSlug($slug);
  22. for ($i=0;$i<3;$i++) {
  23. if ($id > 0) {
  24. $count = $model->where('id','!=',$id)->where('slug', $slug)->where('dist_id', getDistributorId())->count();
  25. } else {
  26. $count = $model->where('slug', $slug)->where('dist_id', getDistributorId())->count();
  27. }
  28. if ($count == 0) {
  29. return $slug;
  30. } else {
  31. $slug = $slug . '-' . generateRandomString(2);
  32. }
  33. }
  34. return $slug . '-' . generateRandomString(5);
  35. }
  36. public static function isRepeatedSlug($id,$slug) {
  37. $id = intval($id);
  38. $self = new self();
  39. $model = $self->model();
  40. $count = $model->where('id','!=',$id)->where('slug', $slug)->where('dist_id', getDistributorId())->count();
  41. if ($count > 0) {
  42. return true;
  43. } else {
  44. return false;
  45. }
  46. }
  47. }