Laravel多个复选框数据获取

2022-04-10 00:00:00 php laravel laravel-4 blade eloquent

在从多个复选框中获取所有值之后,我遇到了一个将数据提取到视图中的严重问题。我可以获取检查的最后一个值,但不能获取更多。

这是我的控制器:

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
}

相关文章