Php for循环在laravel 5.1中不进行迭代
我正在使用Laravel5.1进行我的项目。 我的问题是根据category_id显示数据,该id是表category的外键。 这段代码只获取具有category_id 1的数据,这个循环只在$i=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++) { $
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列吗?