你都知道git 有无限极分类了不去试试?
public function cate_list()
{
$list = ArticleCate::getNestedList('name');
return view('admin.article_cate.cate_list')->with('list',$list);
}
/**
* 添加
*/
public function cate_new()
{
$list = ArticleCate::getNestedList('name','id','-');
return view('admin.article_cate.cate_new')->with('list',$list);
}
/**
* 添加post
*/
public function cate_store(Request $request)
{
$data = $request->all();
if ($data['cate'] == 0) {
$root = ArticleCate::create(['name'=>$data['name']]);
} else {
$child = ArticleCate::create(['name'=>$data['name']]);
$child->makeChildOf($data['cate']);
}
}
/**
* 更新
*/
public function cate_edit($id)
{
$cate_info = ArticleCate::findOrFail($id);
$list = ArticleCate::getNestedList('name','id','-');
return view('admin.article_cate.cate_edit',compact('cate_info','list'));
}
/**
* 修改时
* 1,父类分类选了自己的子级
* isAncestorOf();如果node是另一个的祖先,则返回true。
* 2,修改是不能选择自己分类
* equals();当前节点实例等于另一个。
*
*/
public function cate_update(Request $request, $id)
{
$data = $request->all();
$demons = ArticleCate::findOrFail($id);
$update_data = [
'name' => $data['name']
];
if ($data['cate'] == 0) {
$demons->makeRoot();
$demons->update($update_data);
} else {
$root = ArticleCate::findOrFail($data['cate']);
$condition_one = $demons->isAncestorOf($root);
$condition_two = $demons->equals($root);
if ($condition_one || $condition_two) {
return "no";
}
$demons->makeChildOf($data['cate']);
$demons->update($update_data);
}
}
/**
* @param $id
* 删除时如果分类还有子类不能删除
* getDescendants():检索其所有的孩子和嵌套的孩子。
* 分类删除
*/
public function cate_delete($id)
{
$root = ArticleCate::findOrFail($id);
$list = $root->getDescendants()->toArray();
if (!empty($list)) {
return "no delete!";
}
$root->delete();
}