【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 ...
 
随机推荐
- Dictionary GetOrAdd
			
public static TValue GetOrAdd<TKey,TValue>( this Dictionary<TKey,TValue> dictionary, TKe ...
 - javax.imageio.IIOException: Can't create output stream! (生成验证码Servlet)
			
在 web.xml里面加入 下面的代码: <servlet> <servlet-name>validatecode</servlet-name> ...
 - ubuntu下如何查看自己的外网IP
			
1.1 安装使用curl命令实现 sudo apt-get install curl1.2 输入命令 curl ifconfig.me
 - html5-语义化标签(一)
			
1.什么是语义化标签? 根据内容的结构化(内容化),选择合适标签 2.为什么要语义化 为了在没有css样式的情况下,页面也能很好的呈现出很好的内容结构.代码结构 方便其他设备的解析(屏幕阅读器.盲人阅 ...
 - 数学图形之SineSurface与粽子曲面
			
SineSurface直译为正弦曲面.这有可能和你想象的正弦曲线不一样.如果把正弦曲线绕Y轴旋转,得到的该是正弦波曲面.这个曲面与上一节中的罗马曲面有些相似,那个是被捏过的正四面体,这个则是个被捏过正 ...
 - [leetcode]Construct Binary Tree from Preorder and Inorder Traversal @ Python
			
原题地址:http://oj.leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 题意:根 ...
 - Open edX 学习、开发、运维相关链接整理
			
原文地址:http://edustack.org/ 所需知识: Linux Git Python (Django Mako coffeescript sass) (MongoDB Mysql) Ans ...
 - Back Track 5 之 网络踩点
			
DNS记录探测 dnsenum 针对NDS信息收集的工具 格式: ./dnsenum.pl dbsserver (域名) 请原谅我拿freestu.net这个学校团委的域名做的测试,求不黑!! dns ...
 - j2ee model1模型完成分页逻辑的实现 详解!
			
在显示用户全部信息的页面,在显示全部数据的时候,长长的滚动条,像是没有边界的天空一样, 让用户查看数据很不方便. 于是, 我们要把这些数据分页显示, 就像office的word一样,每页显示一定数量的 ...
 - C#.NET常见问题(FAQ)-如何修改代码字体
			
工具-选项-字体和颜色 更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123 我的在线论坛: http://csrob ...