| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <?phpnamespace App\Models\Admin;use Encore\Admin\Traits\AdminBuilder;use Encore\Admin\Traits\ModelTree;use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\Relations\BelongsToMany;use Illuminate\Support\Facades\Cache;class AdminMenu extends Model{    protected $table = 'admin_menu';    use AdminBuilder, ModelTree {        ModelTree::boot as treeBoot;    }    /**     * The attributes that are mass assignable.     *     * @var array     */    protected $fillable = ['parent_id', 'order', 'title', 'icon', 'uri', 'permission'];    /**     * @return array     */    public function allNodes() : array    {        $order="`order` = 0,`order`";        return static::orderByRaw($order)->get()->toArray();    }    /**     * determine if enable menu bind permission.     *     * @return bool     */    public function withPermission()    {        return (bool) config('admin.menu_bind_permission');    }    /**     * Detach models from the relationship.     *     * @return void     */    protected static function boot()    {        static::treeBoot();        static::deleting(function ($model) {        });    }    /**     * 菜单封装装.     * return object     */    public static function menuArr()    {        $order="`order` = 0,`order`";        $menus = self::orderByRaw($order)->select(['id', 'parent_id', 'title'])->get();        $menu_array=[];        foreach ($menus as $menu) {            $menu_array[$menu['id']]=$menu;        }        $menu_res=[];        foreach ($menu_array as $key => $value) {            $menu_res[$key] = self::getName($value, $menu_array);        }        return $menu_res;    }    public static function getName($value, $list)    {        if ($value['parent_id'] == 0) {            return $value['title'];        } elseif (isset($list[$value['parent_id']])) {            return self::getName($list[$value['parent_id']], $list)."-{$value['title']}";        }        return "";    }}
 |