gpt4 book ai didi

php - Laravel 投票系统

转载 作者:行者123 更新时间:2023-11-29 01:21:11 24 4
gpt4 key购买 nike

我正在我的 laravel 学校项目中实现一个投票系统,它将是一个在线学校平台,学生可以上传项目,其他学生可以对发布的内容进行投票。

不知何故,我所做的不起作用...这是我目前的代码,希望有人能帮助我,也许能帮助我了解如何显示项目的投票数。

这是我的数据库迁移:

Schema::create('votes', function($table){
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('project_id')->unsigned();
$table->timestamps();

$table->foreign('user_id')->references('id')->on('users');
$table->foreign('project_id')->references('id')->on('projects');
});

我的模型:

Class Vote extends Eloquent{

public function user(){
return $this->belongsTo('User');
}
public function project(){
return $this->belongsTo('Project');
}

}

我的看法:

@foreach ($projects as $project)
<li class="medium-4 columns">
<div class="canvas-medium">
<img src="{{ $project->image }}">
</div>
<p class="title">{{ $project->name }}</p>
<p class="owner">By
<a href="profile/{{ $project->user_id }}">{{ $project->user->firstname }} {{ $project->user->name }}</a>
<a href="/vote/{{ $project->id }}">Vote</a>
</p>
</li>
@endforeach

我的 Controller :

class VoteController extends BaseController{

public function vote($id){
$vote = new Vote;
$vote->user_id = Auth::id();
$vote->project_id = $id;
$vote->Save();

return Redirect::to('/projects');
}

}

路由.php:

Route::get('/projects', 'ProjectController@showall');
Route::get('/projects/vote/{id}', 'VoteController@vote');

最佳答案

改变

<a href="/vote/{{ $project->id }}">Vote</a>

<a href="/projects/vote/{{ $project->id }}">Vote</a>

附注如果您没有适当的验证,并且您没有在数据库中使用项目 ID 和用户 ID 设置唯一索引,学生可以为一个特定项目多次投票....您可能你也许不想要?

编辑(使用流畅的查询构建器)

Route::get('/projects', 'ProjectController@showall'); 将显示所有项目。

如果你想获得每个项目的详细信息,你必须这样做:

  • 设置路线。例如Route::get('/projects/{id}', 'ProjectController@showone')
  • 然后在 controller/repo/model 中检索结果
    return DB::table('vote')->where('project_id','=',$id)->get();

如果你想显示每个项目的每个投票计数,那么它会有点复杂,但就是这样。

return DB::table('project AS p')->select([DB::raw('@project:=p.id'), 
DB::raw('(SELECT COUNT(id) FROM votes AS v WHERE v.project_id = @project) AS votes'),
])->paginate(30); //or get()

关于php - Laravel 投票系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26868660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com