我试图在数据库中显示用户的评论,并且可以给他们的评论+1。这是观点。
<br>Comments:<br>
@foreach($show as $sh)
<span class="comment">{{$sh->comment}} --<b style="color:blue">{{$sh->name}},</b> {{$sh->email}}</span>
<form method="POST" action="{{url("/review/now/add/{$sh->id}")}}">
{!! csrf_field() !!}<input type="submit" value="+1">
Total score: <mark>{{$sh->score}}</mark><br><br>
@endforeach
但是,我点击后每+1个按钮重定向到/review/now/add/1
。我应该点击我点击的评论并将其存储在数据库中。 comment
,name
,adn score
是数据库列。
路线:
Route::post('/review/now/add/{id}','reviewcontroller@nowadd');
控制器:
public function nowadd($id)
{
$add=review::where('id',$id)->get();
$count=$add->score;
$now=$count+1;
$nowadd= review::where('id',$id)->update(['score'=>$now]);
return redirect('/review')
->with('message','your have +1 d the comment.' );
}
使用where子句我应该在url中选择该id的行,并为该id的分数添加+1。但我也在这里失败了。它显示未定义的属性分数。 $ add可能是导致此错误的数组。但它怎么可能呢?我只选择具有该ID的一行。当我使用first();
代替get();
时,一切都很好,但只适用于第一条评论。
答案 0 :(得分:1)
get()
方法将返回Collection类,first()
将返回Model类,这是查询中的第一个模型实例
要进行更新,您需要使用模型而不是集合。当您尝试访问Collection上的score
属性时,由于score
属性位于模型而不是集合上,因此无法正常工作
您实际上可以使用集合,并使用foreach进行查询,这将在每次迭代时为您提供模型
答案 1 :(得分:0)
试试这个:
public function nowadd($id)
{
review::where('id', $id)->increment('score',1); // assuming that score is a column in your review database
return redirect('/review')
->with('message','your have +1 d the comment.' );
}
更新:关闭表单
<br>Comments:<br>
@foreach($show as $sh)
<span class="comment">{{$sh->comment}} --<b style="color:blue">{{$sh->name}},</b> {{$sh->email}}</span>
<form method="POST" action="{{url("/review/now/add/{$sh->id}")}}">
{!! csrf_field() !!}<input type="submit" value="+1">
</form>
Total score: <mark>{{$sh->score}}</mark><br><br>
@endforeach