Laravel Input :: all()仅获取一行

时间:2016-06-21 20:30:18

标签: php laravel laravel-5 eloquent

我有一个带有表格示例的表单

姓名|评论|评级|状态

此表可能有多行,只有状态可编辑,这是一个下拉字段

我能够显示所有数据,但是当我使用下面的代码保存时,我注意到dd只显示一行。保存时,保存一行,然后显示错误。 错误:

  

DashBoardController.php第432行中的ErrorException:创建默认值   来自空值的对象

第432行是:$approved_reviews->approved= $status1

以下是我的代码段。请帮忙。

$approve_reviews = Input::except('_token');          

foreach ($approve_reviews as $review_id) {
    $approved_reviews = dealer_reviews::where('id',$review_id )->first();
    $status1 = Input::get('status');
    $approved_reviews->approved= $status1;

    $approved_reviews->save();
}

我也试过了Input::all(),但是dd只显示了一行。

我的表格代码

@if(isset($pending_reviews))
       {!! Form::open(array('action' => array('DashBoardController@ApproveReviews' ), 'class'=>'form','files' => true,'data-toggle' => 'validator' ,'id'=>'edit_form')) !!}
       <div class="table-responsive">
         <table class="table table-hover table-condensed table-bordered">
          <thead>
            <tr class="danger">
              <td>
               <p style="font-weight:500;font-size:1.0em;"> Dealership Name </p>
              </td>
              <td>
                <p style="font-weight:500;"> Review </p>
              </td>
              <td>
                <p style="font-weight:500;"> Rating</p>
              </td>
              <td>
                <p style="font-weight:500;"> Suggestion</p>
              </td>
              <td>
                <p style="font-weight:500;"> Status </p>
              </td>
            <tr>

          </thead>

                  @foreach($pending_reviews as $p_review)
          <tr class="active">
              <td>
               <p style="font-weight:500;font-size:1.0em;"> {{$p_review-> dealership_name}} </p>
               <input type="hidden" value={{$p_review-> id}} name="review_id">

              </td>
              <td>
                <p style="font-weight:500;font-size:1.0em;"> {{$p_review-> review}} </p>
              </td>
              <td>
                <p style="font-weight:500;font-size:1.0em;"> {{$p_review-> rating}} </p>
              </td>
              <td>
                <p style="font-weight:500;font-size:1.0em;"> {{$p_review-> suggestions}} </p>
              </td>
              <td>
                <p style="font-weight:500;font-size:1.0em;"> 
                 <select name="status">
            <option value="0">Pending</option>
             <option value="1">Approve</option>

        </select> 
                 </p>
              </td>

            <tr>
               @endforeach

         </table>
      </div>

       <input  type='submit' class="btn btn-success" name='Save' value='Submit' />
        {!! Form::close() !!}
        @else
        <h3> No Pending Reviews </h3>
        @endif

2 个答案:

答案 0 :(得分:2)

请注意,所有输入的名称都相同。 你必须改变这一行。

<input type="hidden" value={{$p_review-> id}} name="review_id">

通过将id连接到名称。 在foreach循环内部增加id并将其分配给名称 以及&#34; review_id&#34;。

<input type="hidden" value={{$p_review-> id}} name="review_id_{{$i}}">

foreach ($approve_reviews as $review_id) {
    $new_id = explode("_ ",$review_id);
    $approved_reviews =dealer_reviews::where('id',$new_id[0])->first();
    $status1 = Input::get('status');
    $approved_reviews->approved= $status1;

    $approved_reviews->save();
}

答案 1 :(得分:0)

该错误意味着$approved_reviews不是此时的对象。在您的情况下,这意味着没有找到ID与$review_id匹配的记录,这似乎很可能,因为此行表明并非所有输入都是ID:

$status1 = Input::get('status');

您可能需要稍微调整一下逻辑,但如果没有看到输入样本,我就无法提供更多详细信息。