MenuItemRepository.php 1017 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace Longyi\DynamicMenu\Repositories;
  3. use Webkul\Core\Eloquent\Repository;
  4. use Longyi\DynamicMenu\Models\MenuItem;
  5. class MenuItemRepository extends Repository
  6. {
  7. public function model()
  8. {
  9. return MenuItem::class;
  10. }
  11. public function getMenuTree()
  12. {
  13. $items = $this->all();
  14. return $this->buildTree($items);
  15. }
  16. private function buildTree($items, $parentId = null)
  17. {
  18. $tree = [];
  19. foreach ($items as $item) {
  20. if ($item->parent_id == $parentId) {
  21. $children = $this->buildTree($items, $item->id);
  22. if ($children) {
  23. $item->children = $children;
  24. }
  25. $tree[] = $item;
  26. }
  27. }
  28. return $tree;
  29. }
  30. public function getMenuItemsForRole($roleId)
  31. {
  32. return $this->model->whereHas('roles', function($query) use ($roleId) {
  33. $query->where('role_id', $roleId);
  34. })->where('status', 1)->get();
  35. }
  36. }