【laravel5.4】Baum无限极分类和collect助手函数、transform()中间件(转换数据)方法使用
1、目的,无限极分类
/*
* getdepartment:获取【当前登录用户对应公司的所有有效部门】
* DB::table ==>返回查询构造器结果,不会返回一个collect实例
* 而 【默认情况下,Eloquent 查询的结果总是返回 Collection 实例】
* 进行transform操作
* add by Daisheng 2018/04/03
*/
public function getdepartment(Request $request)
{
$department = DB::table('departments')
->select('departments.*', 'd.dep_name as parent_name')
->leftJoin('departments as d', 'd.id', '=', 'departments.parent_id')
->where('departments.company_id',$this->company_id)
->orderBy('departments.lft')
->get();
/*
* collect():全局助手函数,将放入的数据转换成集合对象 instance
*/
$department = collect($department);
/*
* transform():全局中间件TransformsRequest的方法,递归处理请求数据格式
*/
$department->transform(function ($item, $key) {
$item->parent_name = $item->parent_name ? $item->parent_name : '/';
$item->dep_name = str_repeat('—', $item->depth) . $item->dep_name;
return $item;
});
return $department;
} /*
* model::create([]):方法返回被插入的模型实例。但是,在此之前,你需要指定模型的 fillable 或 guarded 属性
* 参考http://laravelacademy.org/post/6979.html
* model继承baum\node类库的makeChildOf() 建立插入模型和parent模型对象之间的关系
*/
public function departmentstore(Request $request)
{
$parent_id = $request->parent_id ? $request->parent_id : 0;
//返回被插入的模型实例对象
$dep_name = Department::create(['dep_name' => $request->dep_name,'company_id'=>$this->company_id]);
if ($parent_id) {
//返回当前实例的parent_id对应的模型实例
$parent = Department::where('id', '=', $parent_id)->first();
//通过model继承baum\node类库的makeChildOf() 建立插入模型和parent模型对象之间的关系
$dep_name->makeChildOf($parent);
} else {
$dep_name->save();
}
echo 1;
}
【laravel5.4】Baum无限极分类和collect助手函数、transform()中间件(转换数据)方法使用的更多相关文章
- 【laravel54】关于用户权限认证RBAC和无限极分类
1.权限认证方面: https://packagist.org/packages/spatie/laravel-permission 用户认证 HTTP本身是无状态,通常在系统交互的过程中,使用账号或 ...
- php无限极分类以及递归(thinkphp)
php无限极分类: 无限极分类重点在于表的设计: 1在model中: class CatModel extends Model{ protected $cat = array(); public fu ...
- js实现无限极分类
转载注明出处!!! 转载注明出处!!! 转载注明出处!!! 因为要实现部门通讯录,后台传来的数据是直接从数据库里拿的部门表,所以没有层级分类,只有parentId表示从属关系,所以分类的事情就交给我来 ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制
在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...
- PHP无限极分类
当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱, ...
- PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂
当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究. 到网上一搜php无限极分类,很多,但好多都是一 ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现
今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...
- 谈一次php无限极分类的案例
作者:白狼 出处:http://www.manks.top/php_tree_deep.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追 ...
- PHP无限极分类生成树方法,无限分级
你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了.这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了. function g ...
随机推荐
- Tomcat6内存不足问题及解决方法
1.Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行.常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常 ...
- linux常用C函数目录
字符测试篇 isalnum isalpha isascii iscntrl isdigit isgraphis islower isprint isspace ispunct isupper isxd ...
- DAO,Service接口与实现类设计
DAO接口 为每个DAO声明接口的好处在于 1. 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO的调用 2. 可以为DAO进行多实现,例如有JDBCDAO实现,MyBatisD ...
- GeoHash核心原理解析及java代码实现(转)
原文链接:http://blog.jobbole.com/80633/ 引子 机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西.某一天机机到北海公园游玩,肚肚饿了,于是乎 ...
- POJ 1753 Flip Game (枚举)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26492 Accepted: 11422 Descr ...
- C# 实现PNG文件的背景透明显示,解决动态显示闪烁问题 【转】
http://blog.sina.com.cn/s/blog_402c071e0102x4rl.html 以下内容,对于想要使用C#实现PNG图片背景透明显示,同时动态显示时无闪烁问题的人来说, ...
- Builder 建造者模式 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- jwplayer 隐藏属性方法记载
jwplayer().getPosition(): //播放了多少秒 jwplayer('playerdiv').play(); || jwplayer(0).play(true / false); ...
- 理解JavaScript模仿块作用域
1.JS没有块作用域 在C和Java中,一对大括号{}决定一个作用域,比如for循环.在js中,变量可以在函数任何一处定义,并且忽略重复定义.变量初始化之前使用,值永远是undefined. func ...
- GISer面对创业的困惑
最近看各大IT门户网站都会看到很多XXX的创业经历,特别是最近比较火爆的手机APP,更是让很多吊丝程序员成功逆袭.不得不佩服人家对自身技术的坚持和面对机会的把握能力,但是身为GIS专业的自己,每次都很 ...