[英]Upvote or downvote to the users posts
我想贊或贊一下其他用戶發布的帖子。用戶將上傳一個帖子,i
遷移投票表
public function up()
{
Schema::create('votes', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
$table->unsignedInteger('post_id');
$table->foreign('post_id')->references('id')->on('posts');
$table->integer('vote');
$table->boolean('hide')->default(0);
$table->timestamps();
});
}
路線文件
api.php
Route::group(['middleware'=>[
'auth:api', \App\Http\Middleware\OnlyRegisteredUsers::class]
], function(){
/**
* Group for registered users only APIs
*/
Route::post('saveMedia','UserController@saveMedia');
Route::post('voteToPost','UserController@voteToPost');
});
調節器
public function voteToPost(Request $request)
{
$userid = $request->user()->id;
$postid = $request->get('post_id');
$vote = $request->get('vote');
$votecount = DB::table('votes')->where('user_id', $userid)->where('post_id', $postid)->wherea('hide', 0)->count();
if($votecount == 0){
DB::table('votes')
->leftJoin('users', 'users.id', '=', 'votes.user_id')
->leftJoin('posts', 'posts.id', '=', 'votes.post_id')
->where(['votes.hide' => 0, 'votes.user_id' =>$userid, 'votes.post_id' =>$postid])
->updateOrInsert([
'user_id' => $userid,
'post_id' => $postid,
'vote' => $vote,
'hide' => 0,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
}
我收到以下錯誤“消息”:“SQLSTATE [23000]:完整性約束違規:1052列‘隱藏’在where子句是曖昧(SQL:選擇存在(SELECT * FROM
votes
左加入users
的users
。id
=votes
。user_id
左連接posts
上posts
。id
=votes
。post_id
其中(votes
。hide
= 0和votes
。user_id
= 3和votes
。post_id
= 6)和(user_id
= 3和post_id
= 6和vote
= 1和hide
= 0和created_at
= 2018-10-05 11:44:38和updated_at
= 2018-10-05 11:44:38))exists
)“,
public function voteToPost(Request $request){
$userid = $request->user()->id;
$postid = $request->get('post_id');
$vote = $request->get('vote');
$user = User::where(['id'=>$userid, 'hide'=>0])->first();
$post = DB::table('posts')->where(['id'=>$postid, 'hide'=>0])->first();
if($user && $post && in_array($vote, [0,1,-1])){
DB::table('votes')
->updateOrInsert(['user_id'=>$userid, 'post_id'=>$postid],[
'user_id' => $userid,
'post_id' => $postid,
'vote' => $vote,
'hide' => 0,
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
return ['message'=>'ok'];
}
return abort(403, 'Invalid request');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.