mysql - 具有表值条件的 Laravel 查询

标签 mysql sql laravel

我想从一个列名为'is_reviewed'的表中查询,当'is_reviewed'的值为0时,再查询这个表,如果值为“1”,则从其他表中查询,是否可以这样做?

我正在使用 Laravel 5.5,现在我只是在使用 if else 并且这不起作用。

$isReviewed = ProjectUser::where('user_id', Auth::user()->id)
    ->select(DB::raw('(CASE WHEN is_reviewed = 0 THEN "0" ELSE "1" END)'))->get();

if ($isReviewed == '0') {
    $datas = ProjectUser::where('user_id', Auth::user()->id)
        ->where('projects.status', 2)
        ->join('users', 'users.id', '=', 'project_users.user_id')
        ->join('projects', 'projects.id', '=', 'project_users.project_id')
        ->join('websites_list', 'websites_list.id', '=', 'projects.id_website')
        ->select('projects.*', 'websites_list.url_web', 'users.name', 'project_users.user_id')
        ->whereNotIn('is_reviewed', [1])
        ->get();
} elseif ($isReviewed == '1') {
    $datas = ReviewProjectUser::where('reviewer_user_id', Auth::user()->id)
        ->where('projects.status', 2)
        ->join('users', 'users.id', '=', 'review_project_users.reviewer_user_id')
        ->join('projects', 'projects.id', '=', 'review_project_users.project_uid')
        ->join('websites_list', 'websites_list.id', '=', 'projects.id_website')
        ->select('projects.*', 'websites_list.url_web', 'users.name', 'review_project_users.reviewer_user_id')
        ->get();

最佳答案

您是想在查询中获取数组结果还是仅获取一行。如果您在查询中的预期结果只是一行,那么不要使用 ->get() 而是尝试使用 ->first()

使用 ->get() 返回 $isReviewed 作为数组。

尝试在查询中使用 ->first()。像这样。

无论如何,在这里简化您的查询是 Eloquent 方式。

$isReviewed = ProjectUser::where('user_id', Auth::user()->id)->first();

if ($isReviewed->is_reviewed == '0') 
{
    //your code
}
else if($isReviewed->is_reviewed == '1') 
{
    //your code
}

关于mysql - 具有表值条件的 Laravel 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602575/

相关文章:

mysql - 我是否应该打破规范化规则并添加额外的 FK

Mysql/PDO - 设置变量

mysql - 进行 MySQL 查询时是否需要将表链接在一起?

sql - 将所有表放入一个数据库 - 好还是坏

mysql - Select with count 的 SQL 结果

Laravel 5.4 和 Vue 2.0.1 无法读取未定义的属性 'get'

java - hibernate 保存到数据库 "Duplicate entry ' 1' for key ' UK_2n5xttsxwbyc6x67l0x8phfwn'"

mysql - SQL:如何从表 `property` 返回两行数据?

php - Laravel Eloquent 无法通过 $model->id 访问;

php - Laravel-如何检查(SSH)套接字是否有效?