我正在Laravel 4中建立一个简单的投票申请,候选人将被投票。我有两个实体候选人和投票人,有一对多的关系。当有人点击某个按钮时,我会获得该候选人的ID并将其存储在只有一个candidate_id
字段的投票表中。我有一个名为VoteController
的{{1}}函数,看起来像这样
votesuccess
从上面我有另一个名为$vote = new Vote;
$candidate_id =Input::get('name');
$candidate = Candidate::find($candidate_id);
$vote = $candidate->votes()->save($vote);
$count = DB::table('votes')->where('candidate_id','==','$candidate_id')->count();
Session::flash('message', 'Successfully Cast your vote!');
return Redirect::to('voteresults')->with('count',$count);
的VoteController函数,我将其传递给所有候选人
voteresults
我将投票存储为行,我想通过计算行来计算投票数,因此这段代码
$candidates = Candidate::all();
return View::make('votes.voteresults',['candidates'=>$candidates]);
我试图访问所有候选人信息以及他们从名为$count = DB::table('votes')->where('candidate_id','==','$candidate_id')->count();
的视图中获得的投票数量,看起来像这样
voteresults
我试图将<tbody>
@foreach($candidates as $key => $value)
<tr>
<td><img src="{{$value->avatar->url('thumb')}}" alt="..."></td>
<td>{{ $value->name }}</td>
<td>{{ $value->manifesto }}</td>
<td>
{{ $count }}
</td>
</tr>
@endforeach
</tbody>
变量传递给视图,以便我可以捕获候选人的投票数。我不知道是否可以这样做,或者有更好的方法。当我尝试运行时,我得到$count
欢迎任何指导。
答案 0 :(得分:2)
如果我告诉你你想从你的控制器传递两个不同的东西(候选人和选票)给你的观点?
控制器:
$candidates = Candidate::all();
$count = DB::table('votes')->where('candidate_id','=','$candidate_id')->count();
return View::make('votes.voteresults')->with('candidates', $candidates)->with('count',$count);
查看:
<tbody>
@foreach($candidates as $key => $value)
<tr>
<td><img src="{{$value->avatar->url('thumb')}}" alt="..."></td>
<td>{{ $value->name }}</td>
<td>{{ $value->manifesto }}</td>
<td>
{{ $count }}
</td>
</tr>
@endforeach
</tbody>
请参阅此文档: Views
答案 1 :(得分:1)
我相信您遇到的一个问题是,在$count
查询的标准范围内,您的$candidate_id
变量在单引号内。我没有测试,但尝试下面的代码。
$vote = new Vote;
$candidate_id =Input::get('name');
$candidate = Candidate::find($candidate_id);
$vote = $candidate->votes()->save($vote);
Session::flash('message', 'Successfully Cast your vote!');
return Redirect::to('voteresults');
向Candidate
模型添加类似于此的方法:
public function getTotalVotesAttribute()
{
return $this->hasMany('Vote')->whereCandidateId($this->id)->count();
}
在VoteResults
控制器中:
$candidates = Candidate::all();
return View::make('votes.voteresults',['candidates'=>$candidates]);
在voteresults
视图中:
<tbody>
@foreach($candidates as $key => $value)
<tr>
<td><img src="{{$value->avatar->url('thumb')}}" alt="..."></td>
<td>{{ $value->name }}</td>
<td>{{ $value->manifesto }}</td>
<td>
{{ $value->total_votes }}
</td>
</tr>
@endforeach
</tbody>