Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将变量从Laravel 4中的不同控制器传递到视图_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

Php 将变量从Laravel 4中的不同控制器传递到视图

Php 将变量从Laravel 4中的不同控制器传递到视图,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我正在Laravel 4中构建一个简单的投票应用程序,候选人将在这里投票。我有两个实体的候选人和投票与一对多的关系。当有人点击一个按钮时,我会得到候选人的id并将其存储在投票表中,其中只有一个候选人id字段。我有一个名为votesuccess的VoteController函数,看起来像这样 $vote = new Vote; $candidate_id =Input::get('name'); $candidate = Candidate::find($candidate_id); $vote

我正在Laravel 4中构建一个简单的投票应用程序,候选人将在这里投票。我有两个实体的候选人和投票与一对多的关系。当有人点击一个按钮时,我会得到候选人的id并将其存储在投票表中,其中只有一个
候选人id
字段。我有一个名为
votesuccess
VoteController
函数,看起来像这样

$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);
<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>
从上面我有另一个VoteController函数,名为
voteresults
,我像这样把它传递给所有候选函数

$candidates = Candidate::all();
return View::make('votes.voteresults',['candidates'=>$candidates]);
我将选票存储为行,我想通过计算行数来计算选票,因此使用此代码

$count = DB::table('votes')->where('candidate_id','==','$candidate_id')->count();
我试图访问所有候选人信息以及他们从名为
voteresults
的视图中获得的票数,该视图如下所示

$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);
<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>

@foreach($key=>$value)
头像->url('thumb')}“alt=“…”>
{{$value->name}
{{$value->manifesto}
{{$count}}
@endforeach

我正在尝试将
$count
变量传递给视图,以便我可以捕获候选人的投票数。我不知道是否可以这样做,或者是否有更好的方法。当我尝试运行此操作时,我会得到
未定义的变量count
欢迎任何指导。

如果我正确理解,您希望通过两个dif从你的控制者到你的观点有什么不同的东西(候选人和选票)

控制器:

    $candidates = Candidate::all();
    $count = DB::table('votes')->where('candidate_id','=','$candidate_id')->count();
    return View::make('votes.voteresults')->with('candidates', $candidates)->with('count',$count);
$candidates = Candidate::all();
return View::make('votes.voteresults',['candidates'=>$candidates]);
视图:


@foreach($key=>$value)
头像->url('thumb')}“alt=“…”>
{{$value->name}
{{$value->manifesto}
{{$count}}
@endforeach
请参阅本文档:

我认为您的一个问题是,在
$count
查询的where条件中,您的
$candidate\u 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');
候选者
模型添加一个类似于以下内容的方法:

 public function getTotalVotesAttribute()
 {
    return $this->hasMany('Vote')->whereCandidateId($this->id)->count();

 }
VoteResults
控制器中:

    $candidates = Candidate::all();
    $count = DB::table('votes')->where('candidate_id','=','$candidate_id')->count();
    return View::make('votes.voteresults')->with('candidates', $candidates)->with('count',$count);
$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>

@foreach($key=>$value)
头像->url('thumb')}“alt=“…”>
{{$value->name}
{{$value->manifesto}
{{$value->总票数}
@endforeach

是的,它可以工作,但是count变量对所有候选行返回零。我的查询可能有问题,但是我如何对所有具有特定
候选行id的行进行计数。
。啊,好的,请参阅jwalton512的更新答案。我相信这是正确的方法。它可以工作,但似乎对所有候选行显示一个数字具体日期我投票给的候选人的号码。我如何使其显示每个候选人的个人投票。