Controller.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Permission;
  4. use Illuminate\Foundation\Bus\DispatchesJobs;
  5. use Illuminate\Routing\Controller as BaseController;
  6. use Illuminate\Foundation\Validation\ValidatesRequests;
  7. use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
  8. class Controller extends BaseController
  9. {
  10. use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
  11. /**
  12. * 处理权限分类
  13. */
  14. public function tree($list=[], $pk='id', $pid = 'parent_id', $child = '_child', $root = 0)
  15. {
  16. if (empty($list)){
  17. $list = Permission::get()->toArray();
  18. }
  19. // 创建Tree
  20. $tree = array();
  21. if(is_array($list)) {
  22. // 创建基于主键的数组引用
  23. $refer = array();
  24. foreach ($list as $key => $data) {
  25. $refer[$data[$pk]] =& $list[$key];
  26. }
  27. foreach ($list as $key => $data) {
  28. // 判断是否存在parent
  29. $parentId = $data[$pid];
  30. if ($root == $parentId) {
  31. $tree[] =& $list[$key];
  32. }else{
  33. if (isset($refer[$parentId])) {
  34. $parent =& $refer[$parentId];
  35. $parent[$child][] =& $list[$key];
  36. }
  37. }
  38. }
  39. }
  40. return $tree;
  41. }
  42. }