我的网站上有抽奖,要参加抽奖,您需要每天进行一些操作。有一个代码可以检查所有内容:

    $date = Carbon::today();
    $sta = \DB::table('ets')->where('user_id', $this->user->id)->where('created_at', '>=', $date)->get();
    $sta = \DB::table('ets_1x1')->where('user_id', $this->user->id)->where('created_at', '>=', $date)->get();
    $sta = \DB::table('ets_low')->where('user_id', $this->user->id)->where('created_at', '>=',$date)->get();
    $sta = \DB::table('ets_duel')->where('user_id', $this->user->id)->where('created_at', '>=', $date)->get();

if ($sta == NULL) {
                return response()->json(['status' => 'error', 'msg' => 'Error']);
            }


此代码检查4个可能的表中是否有用户记录。我在表ets_1x1中创建了一个条目,但仍然无法参加,因为该错误似乎在数据库中找不到我。我删除了所有表格,只留下了ets_1x1,我被图纸接受了。

据我了解,该值取自上一个请求。如何将查询合并为1,并对这4个表进行检查?

UPD:

我还尝试给变量命名,并以不同的方式显示响应代码,现在所有人(甚至包括未满足条件的人)都接受参与图形,现在看起来:

    if(!empty($sta_1) || !empty($sta_2) || !empty($sta_3) || !empty($sta_4)) {
        return response()->json(['status' => 'error', 'msg' => 'Error']);
    }


我的错误在哪里?

最佳答案

该代码将无法正常工作,因为:


第一部分代码将仅评估最后一个请求(并且,仅在最后一个表上存在任何用户的情况下)。
第二段代码未正确评估,您正在Laravel集合上运行空函数。


你为什么不试试这个呢?我认为它应该工作:

$date = Carbon::now();
$userExists = false;
$tables = ['ets', 'ets_1x1', 'ets_low', 'ets_duel'];

foreach ($tables as $tableName) {
    $result = \DB::table($tableName)
        ->where('user_id', $this->user->id)
        ->where('created_at', '>=', $date)
        ->get()
    ;
    if ($result->isNotEmpty()) {
        $userExists = true;
        break;
    }
}

if (!$userExists) {
    return response()->json(['status' => 'error', 'msg' => 'Error']);
}

关于mysql - 如何在laravel中组合四个查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59897073/

10-11 20:42