MenuModel.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2017~2021 LARAVEL研发中心
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://www.laravel.cn
  8. // +----------------------------------------------------------------------
  9. // | Author: laravel开发员 <laravel.qq.com>
  10. // +----------------------------------------------------------------------
  11. namespace App\Models;
  12. use Ramsey\Uuid\Type\Integer;
  13. /**
  14. * 菜单管理-模型
  15. * @author laravel开发员
  16. * @since 2020/11/10
  17. * Class MenuModel
  18. * @package App\Models
  19. */
  20. class MenuModel extends BaseModel
  21. {
  22. // 设置数据表
  23. protected $table = 'menu';
  24. /**
  25. * 上级
  26. * @return \Illuminate\Database\Eloquent\Relations\HasOne
  27. */
  28. public function parent()
  29. {
  30. return $this->hasOne(MenuModel::class, 'id','pid')
  31. ->where(['status'=>1,'mark'=>1])
  32. ->select(['id','title','icon','path','type','sort','status']);
  33. }
  34. /**
  35. * 获取子级菜单列表
  36. * @param $pid 父级ID
  37. * @return mixed
  38. * @author laravel开发员
  39. * @since 2020/11/11
  40. */
  41. public function getChilds($pid)
  42. {
  43. // 查询条件
  44. $map = [];
  45. // 父级ID
  46. $map[] = ['pid', '=', $pid];
  47. // 菜单状态
  48. $map[] = ['status', '=', 1];
  49. // 只取菜单
  50. $map[] = ['type', '=', 0];
  51. // 有效标识
  52. $map[] = ['mark', '=', 1];
  53. $list = $this->where($map)->orderBy("sort", "asc")->get()->toArray();
  54. if (!empty($list)) {
  55. foreach ($list as &$val) {
  56. $val['children'] = $this->getChilds($val['id']);
  57. }
  58. }
  59. return $list;
  60. }
  61. }