我正在为我的项目使用laravel 5.1。 我的问题是根据category_id显示数据表类别的外键。 此代码仅获取具有category_id 1的DATA,并且此循环仅在$ 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
答案 0 :(得分:0)
您不能使用相同的变量进行迭代,因为您正在迭代的数组(<div class="option-box">
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_0" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="0" checked="checked" type="radio" />
No Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_1" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="8" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4$1\',\'\')', 0)" type="radio" />
Black Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_2" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="9" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4$2\',\'\')', 0)" type="radio" />
White Top
</label>
</div>
<div class="radio">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl03_KitComponent_4_3" name="ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4" value="10" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl03$KitComponent_4$3\',\'\')', 0)" type="radio" />
Silver Top
</label>
</div>
</div>
<div class="option-box">
<div class="checkbox">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl04_KitComponent_10_0" name="ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10$0" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10$0\',\'\')', 0)" value="11" type="checkbox" />
Backdoor
</label>
</div>
<div class="checkbox">
<label>
<input id="ctl00_PageContent_ctl00_KitsList_ctl04_KitComponent_10_1" name="ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10$1" onclick="javascript:setTimeout('__doPostBack(\'ctl00$PageContent$ctl00$KitsList$ctl04$KitComponent_10$1\',\'\')', 0)" value="12" type="checkbox" />
Topdoor
</label>
</div>
</div>
)。因此,你必须得到某种错误。
话虽这么说,你不能用控制器返回多个视图。你将只返回你得到的第一个结果。
你应该做的是这样的事情:
$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'));
}
答案 1 :(得分:0)
当你为一个类别运行时,你将从循环返回。只需在关闭循环括号后放置返回行。像这样......
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'));
}
希望这能解决您的问题。
答案 2 :(得分:0)
最好使用Category
和HelpCenter
之间的关系。有关详细信息Check Here
但是如果你想这样做,那么我认为这是更好的方法:
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'));
}