我正在使用Laravel并在MySql数据库中创建了一个类别表,其中包含使用树遍历导航的字段:
id | parent_id | name | lft | rgt | depth
1 | NULL | test1 | 1 | 2 | 0
2 | NULL | test2 | 3 | 4 | 0
3 | 1 | test3 | 5 | 6 | 1
我想检索包含depth = 0
(test1
和test2
)的对象。
我的控制器中有这个功能:
public function getIndex() {
$categories = array();
foreach(Category::all() as $category)
{
$categories[$category->depth = '0'] = $category->name;
}
return View::make('categories.index')
->with('categorieslist', $categories);
}
但它总是返回最后一项(test2
)。它需要使用depth = 0
返回所有对象。
有什么想法吗?
答案 0 :(得分:2)
问题是您在数组$ category的位置$category->depth = '0'
上保存(并覆盖)数据
不熟悉Laravel,但这应该可以解决问题:
public function getIndex() {
$categories = array();
foreach(Category::all() as $category) {
//If depth equals zero
if ($category->depth == 0) {
//append $category->name to $categories
$categories[] = $category->name;
}
}
return View::make('categories.index')->with('categorieslist', $categories);
}
答案 1 :(得分:2)
您可以使用以下代码获取类别:
$categories = Category::where('depth', '=', 0)->select('name')->get()->toArray();
答案 2 :(得分:0)
你的foreach循环有问题。您实际迭代所有类别并将它们放在第0位。我猜,这应该可以解决问题:
public function getIndex() {
$categories = array();
$all_parent_categories = Category::where('depth','=','0')->get();
$i=0;
foreach(Category::all() as $category)
{
$categories[$i] = $category->name;
$i++;
}
return View::make('categories.index')->with('categorieslist', $categories);
}