我想从一个列名为'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/