【问题标题】:How to use two foreachs in laravel?如何在 laravel 中使用两个 foreachs?
【发布时间】:2017-07-28 18:56:55
【问题描述】:

我有一个类别表,它由'parent_id' 和'categoryid' 组织。我需要将它组织在一个列表中,我将父类与子类分组。

我创建了这段代码。

在控制器中,我得到类别的值。

public function index()
    {
      $cat1 = Category::where('erp_parentid', '=', 0)->get();
      foreach($cat1 as $categoria1){
        $cat2 = Category::where('erp_parentid', '=', $categoria1->erp_categoryid)->get();
        return view('admin.categories')->with('cat1', $cat1)->with('cat2', $cat2);
      }
    }

$cat2是子类,我通过父类的categoryid获取它的值。

但是当我将值传递给视图时,所有父类别都采用与第一个相同的值。

我使用该代码在视图中显示值:

<div class="container">
  <div class="row">
    <ul class="list-group">
      @foreach($cat1 as $value)
      <a data-toggle="collapse" data-target="#catfilha{{$value->erp_categoryid}}"><li class="list-group-item">{{$value->erp_name}}</li></a>
      <ul id="catfilha{{$value->erp_categoryid}}" class="collapse">
        @foreach($cat2 as $value2)
        <li>{{$value2->erp_name}}</li>
        @endforeach
      </ul>
      @endforeach
    </ul>
  </div>
</div>

我在网站上搜索了类似的案例,但没有发现相似之处,有什么建议吗?提前谢谢你。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    您应该在模型中定义关系并在视图中调用它们。试试这样的:

    在类别模型中:

    public function getParent()
    {
        return self::where('erp_parentid', '=', $this->erp_categoryid)->get();
    }
    

    在控制器中:

    public function index()
    {
        $cat1 = Category::where('erp_parentid', '=', 0)->get();
        return view('admin.categories')->with('cat1', $cat1);
    }
    

    在视图中:

    <div class="container">
      <div class="row">
        <ul class="list-group">
          @foreach($cat1 as $value)
          <a data-toggle="collapse" data-target="#catfilha{{$value->erp_categoryid}}"><li class="list-group-item">{{$value->erp_name}}</li></a>
          <ul id="catfilha{{$value->erp_categoryid}}" class="collapse">
            @foreach($value->getParent() as $value2)
            <li>{{$value2->erp_name}}</li>
            @endforeach
          </ul>
          @endforeach
        </ul>
      </div>
    </div>
    

    在您的代码中,return 语句在循环内,因此 cat2 将始终是 cat1 第一项的类别。

    【讨论】:

    • 我很高兴它有帮助! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2020-05-11
    相关资源
    最近更新 更多