【问题标题】:Laravel Input::all() fetching one row onlyLaravel Input::all() 仅获取一行
【发布时间】:2016-10-23 13:38:09
【问题描述】:

我有一个表格示例

姓名 |评论 |评级 |状态

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

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

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

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

下面是我的代码 sn-p。请帮忙。

$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

【问题讨论】:

  • 请分享您的html代码。
  • 请分享表单代码
  • 无法解决您的问题,但dealer_reviews::where('id',$review_id )-&gt;first(); 可能是dealer_reviews::find($review_id);
  • 我已添加表单代码。请建议我在这里做错了什么
  • 它是否保存了表单中的最后一行?

标签: php laravel laravel-5 eloquent


【解决方案1】:

请注意,所有输入的名称都相同。 您必须更改此行。

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

通过将 id 连接到名称。 在你的 foreach 循环中增加 id 并将其分配给名称 连同“review_id”。

<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();
}

【讨论】:

  • 感谢您的输入,它现在正在获取所有行。在这种情况下,我在 where 子句中放什么 $approve_reviews = Input::all(); foreach ($approve_reviews as $reviews) { $reviews_approved = Dealer_reviews::where('id',??? )->first(); $status1 = 输入::get('status'); $reviews_approved->approved= $status1; $reviews_approved->保存(); }
  • 任何输入?请
  • 现在你得到了review_id和id的输入,你用下划线连接起来。你需要在foreach循环中分割$review_id。 $new_id = explode("_ ",$review_id) 。在 where 子句中使用 $new_id[0] 而不是 $review_id
  • 不,它没有。我认为 foreach 应该能够遍历所有的 review_id。那没有发生。如果可能,请尝试并更新。
  • 我为 foreach 循环添加了更改。请检查编辑后的答案
【解决方案2】:

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

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

您可能需要稍微改变一下您的逻辑,但如果没有看到您的输入示例,我无法提供更多细节。

【讨论】:

  • 我已添加表单代码。请建议我在这里做错了什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 2013-08-22
  • 2014-11-27
  • 2014-07-18
  • 1970-01-01
相关资源
最近更新 更多