Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php for循环在laravel 5.1中不进行迭代_Php_Laravel - Fatal编程技术网

Php for循环在laravel 5.1中不进行迭代

Php for循环在laravel 5.1中不进行迭代,php,laravel,Php,Laravel,我正在使用Laravel5.1进行我的项目。 我的问题是根据category_id显示数据,该id是表category的外键。 这段代码只获取具有category_id 1的数据,这个循环只在$i=1时运行,之后就不能进行迭代。 请帮我解决这个问题 我的控制器代码是:- public function category() { $category2=Category::all(); for($i=1;$i<=count($category2);$i++) { $

我正在使用Laravel5.1进行我的项目。 我的问题是根据category_id显示数据,该id是表category的外键。 这段代码只获取具有category_id 1的数据,这个循环只在$i=1时运行,之后就不能进行迭代。 请帮我解决这个问题

我的控制器代码是:-

public function category()
{
 $category2=Category::all();

    for($i=1;$i<=count($category2);$i++)
    {
    $category=HelpCenter::where('category_id','=',$i)->get();

    return view('folder/category',compact('category'));

    }
   @foreach($category as $category)

    <li><a href="/category/{{$category->id}}"> {{$category->questions}}</a></li>

    @endforeach
公共功能类别()
{
$category2=类别::全部();
对于($i=1;$iget();
返回视图(“文件夹/类别”,压缩(“类别”);
}
}

我的视图代码是:-

public function category()
{
 $category2=Category::all();

    for($i=1;$i<=count($category2);$i++)
    {
    $category=HelpCenter::where('category_id','=',$i)->get();

    return view('folder/category',compact('category'));

    }
   @foreach($category as $category)

    <li><a href="/category/{{$category->id}}"> {{$category->questions}}</a></li>

    @endforeach
@foreach($category作为$category)
  • @endforeach
    您不能使用与正在迭代的数组相同的变量进行迭代(
    $category as$category
    )。因此您一定遇到了某种错误

    也就是说,你不能用一个控制器返回多个视图。你只会返回你得到的第一个结果

    你应该这样做:

    public function category()
    {
        $category2=Category::all();
        $categories = [];
        for($i=1;$i<=count($category2);$i++)
        {
            $categories[]=HelpCenter::where('category_id','=',$i)->get();
        }
        return view('folder/category',compact('categories'));
    }
    
    公共功能类别()
    {
    $category2=类别::全部();
    $categories=[];
    对于($i=1;$iget();
    }
    返回视图(“文件夹/类别”,压缩(“类别”);
    }
    
    在你看来:

    @foreach($categories as $category)
    
        <li><a href="/category/{{$category->id}}"> {{$category->questions}}</a></li>
    
    @endforeach
    
    @foreach($categories作为$category)
    
  • @endforeach
    当循环为一个类别运行时,您正在从循环返回。只需在关闭循环括号后放置您的返回行。如下

        public function category()
        {
          $category2=Category::all();
          for($i=1;$i<=count($category2);$i++)
          {
            $category[]=HelpCenter::where('category_id','=',$i)->get();
          }
          return view('folder/category',compact('category'));
        }
    
    公共功能类别()
    {
    $category2=类别::全部();
    对于($i=1;$iget();
    }
    返回视图(“文件夹/类别”,压缩(“类别”);
    }
    

    希望这能解决您的问题。

    最好使用
    类别
    帮助中心
    之间的关系了解更多信息

    但如果你想这样做,我认为这是更好的方式:

    public function category()
    {
       $category2=Category::all();
       $category = [];
       foreach($category2 as $cat ){ 
            $category[] = HelpCenter::where('category_id','=',$cat->id)->get();
       } 
        return view('folder/category',compact('category'));
    
    }
    

    dd(计数(类别2));查看它打印的内容…还返回for循环中的视图?您真正想要实现的是什么?return语句终止函数的执行并将控制返回给调用函数。调用函数中的执行在调用后立即恢复。return语句还可以将值返回给调用函数类别和帮助中心之间的关系是什么?
    $category=category::join('help\u center\u table','help\u center\u table.category\u id','=','category\u table.id')->get();
    您可以添加select()在示例中指定列$category将传递一个对象而不是一个对象集合。它将覆盖值并传递上一个集合对象。我已更新了此答案。我认为现在它应该可以正常工作。在您的示例中,除了传递数组变量外,似乎没有任何更改…抱歉,已移出视图循环外,因此您实际上得到了完整的类别,而不是第一次循环迭代返回的任何类别。您还应该注意,我已更改了视图中的变量名称。此代码显示了视图文件未定义属性中的错误:$idWell,我真的不知道帮助中心对象中有什么。它没有id列吗?