gpt4 book ai didi

mysql - Laravel 查询以及在同一查询中同时检查 bool 值

转载 作者:行者123 更新时间:2023-11-30 23:44:31 24 4
gpt4 key购买 nike

我有四个模型:User、Question、Answer 和 Upvote。模型满足以下约束:

  • 用户可以提出许多问题
  • 一个问题有很多答案
  • 一个答案属于一个问题
  • 一个答案也有许多赞成票和反对票

(就像一个简单的问答网站)

这是我写的查询:

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 显示已经在带有颜色的帖子上点赞)。如何实现?

(如果没有人登录,那么就没有什么可检查的。如果用户登录了,那么我只想在加入后的每一行中再得到一件事是真还是假)

我不知道如何添加此检查逻辑,无论用户是否已投票,然后得到 true 或 false。

最佳答案

给定一个答案:

$answer = Answer::find(1);

您可以使用经过身份验证的用户的 ID 进行搜索,例如:

$user = $answer->upvotes()->where('user_id', auth()->id())->first();

if ($user) {
// user has voted
} else {
// user has not voted
}

或者另一种方式是:

$upvote = Upvote::where(['answer_id' => $answer->id, 'user_id' => auth()->id()])->first();

关于mysql - Laravel 查询以及在同一查询中同时检查 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833458/

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