我有一个带有表格示例的表单
姓名|评论|评级|状态
此表可能有多行,只有状态可编辑,这是一个下拉字段
我能够显示所有数据,但是当我使用下面的代码保存时,我注意到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
答案 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');
您可能需要稍微调整一下逻辑,但如果没有看到输入样本,我就无法提供更多详细信息。