【发布时间】:2018-07-27 18:10:44
【问题描述】:
我有四个模型:用户、问题、答案和支持。模型满足以下约束:
- 用户可以提出许多问题。
- 一个问题有很多答案
- 一个答案属于一个问题
- 答案有很多赞成和反对
(就像一个简单的问答网站)
这是我写的查询:
DB::table('questions')
->join('answers', 'answers.question_id', '=', 'questions.id')
->join('users', 'users.id', '=', 'answers.user_id')
->select('answers.answer_content as answer_content',
'answers.created_at as created_at',
'users.name as name',
'users.id as u_id',
'users.user_slug as user_slug'
)
->orderBy('answers.created_at', 'desc')
->get();
Upvotes 表包含以下列:
user_id, answer_id, upvote(booolean 1 or 0)
- 1 - 赞成
- 2 - 否决
我的答案模型
public function upvote()
{
return $this->hasMany('App\Upvote', 'answer_id')->where('upvote', 1);
}
public function downvote()
{
return $this->hasMany('App\Upvote', 'answer_id')->where('upvote', 0);
}
支持模型
public function answer()
{
return $this->belongsTo('App\Answer', 'id');
}
它为我提供了 三个 表用户、问题和答案的预期结果。
我想添加的是当前登录的用户是否对特定答案投了赞成票。 (就像 facebook 节目已经在带有颜色的帖子上喜欢)。如何实现?
(如果没有人登录,则无需检查。如果用户已登录,那么我只想在加入后的每一行中再得到一件对或错的东西)
我不知道如何添加这个检查逻辑,无论用户是否投票,然后得到真或假。
【问题讨论】:
标签: mysql laravel laravel-eloquent laravel-query-builder