Laravel 4 - 从数据库中检索对象

时间:2014-11-18 16:10:49

标签: php mysql laravel

我正在使用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 = 0test1test2)的对象。

我的控制器中有这个功能:

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返回所有对象。 有什么想法吗?

3 个答案:

答案 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);
    }