我在Laravel建立了一个带有投票功能的论坛。投票数为+/- 1。然后,属性计算所有'upvotes'和'downvotes'并相应地显示它们。所有在本地工作都很好,投票显示,但一旦我在我们的服务器上,它的计数似乎没有改变。
表格:
{!! Form::open(['route' => 'votes.store']) !!}
{!! Form::button('<i class="fa fa-thumbs-o-up"></i>', array('type' => 'submit', 'value' => 'vote', 'name' => 'vote')) !!}
{!! Form::hidden('task_id', $task->id) !!}
{{$task->upvotes}}
{!! $task->upvotes !!}
{!! Form::button('<i class="fa fa-thumbs-o-down"></i>', array('type' => 'submit', 'value' => 'downvote', 'name' => 'downvotes')) !!}
{{$task->downvotes}}
{!! Form::hidden('task_id', $task->id) !!}
{!! Form::close() !!}
控制器:
public function store(Request $request){
$this->validate($request, ['vote'])
$input = new Votes($request->all());
// $input->user()->associate($request->user());
// $input->tasks()->associate($request->get('task_id'));
if($request->get('downvotes')){
$input->vote = -1;
}
else {
$input->vote = 1;
}
$input->save();
// dd($request->get('upvotes'));
return redirect()->back();
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$task = Task::findOrFail($id);
$categories = Category::findOrFail($id);
$votes = Votes::whereTaskId($task);
return view('tasks.show')->withTask($task)->withCategories($categories)->withVotes($votes);
}
模型关系很好,所有都在SQL DB中显示。以下是属性:
public function getUpvotesAttribute()
{
return $this->votes->where('vote', 1)->count();
}
public function getDownvotesAttribute()
{
return $this->votes->where('vote', -1)->count();
}
我不完全确定会导致问题的原因,如果我能提供更多细节/澄清任何事情,请告诉我。如果不清楚,我道歉。