Laravel多个复选框数据获取
在从多个复选框中获取所有值之后,我遇到了一个将数据提取到视图中的严重问题。我可以获取检查的最后一个值,但不能获取更多。
这是我的控制器:
public function getFilterPaytv(){
$valore = Input::get('opt');
if(!empty($valore))
foreach ($valore as $val) {
$results = Tpaytv::where('Desc', 'LIKE', '%' . $val . '%')->get();
echo $val . ""; //
// echo $results
}
return View::make('result')->with('results', $results);
}
这是我的看法
@if($results->count())
@foreach($results as $pa)
<div class="col-lg-12 ">
<div class="box">
<div class="row">
<div class="col-lg-2"><img src="img/T.png" class="timC"></div>
<div class="col-lg-4">
<ul class="boxCar">
<li>Pro: {{$pa->Type}}</li>
<li>Sca: {{ date("d/m/Y",strtotime($pa -> S))}}</li>
<li
data-toggle="modal"
data-target="#{{ $pa->id }}">
<a>Magg</a></li>
</ul>
</div>
<!--inizio modal -->
<!-- fine modal -->
<div class="col-lg-3"><h1 class="ads">{{$pa->T}}€</h1></div>
<div class="col-lg-3">
{{
link_to_route('confr.show',
'request ',
array($paytv->id),
array('class' => 'btn btn-green btn-md offButton'))
}}
</div>
</div>
</div>
</div>
@endforeach
@else
no
@endif
解决方案
您的代码仍然有许多问题需要解决,但您之所以只获得复选框集的最后结果,假设复选框值来自$valore = Input::get('opt');
,是因为当您循环遍历Foreach中的值时,您将覆盖结果变量。
在您的代码中:
foreach ($valore as $val) {
$results = Tpaytv::where('Desc', 'LIKE', '%' . $val . '%')->get();
echo $val . ""; //
// echo $results
}
直到循环的第一次迭代才声明变量$result
,这意味着在第一次循环中$result
被设置为Tpaytv::where
方法调用的结果,然后在第二次循环中$result
中的值被Tpaytv::where
方法调用的下一个结果覆盖。这就是为什么您只检查最后一个值;它是在Foreach中循环的最后一个值。
如果您想获得一大堆结果,则需要在Foreach循环之前将$result
变量声明为空数组,然后将结果推入数组:
// Create your empty array
$results = array();
foreach ($valore as $val) {
// Push the results of the method call into the array.
// This will keep them from being overwritten in your foreach loop.
$results[] = Tpaytv::where('Desc', 'LIKE', '%' . $val . '%')->get();
echo $val . ""; //
// echo $results
}
相关文章