我的网站上有抽奖,要参加抽奖,您需要每天进行一些操作。有一个代码可以检查所有内容:
$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/