【发布时间】:2021-11-09 08:44:12
【问题描述】:
在 json 循环中查询总是返回存在,即使行不存在。
嗨,我有一个像这样的 Json 对象
{"+888588888":"Person 1", "some_mail@gmail.com":"Person 2"}
我正在使用下面的代码来检查表中是否存在记录:
// Get The Json From Source
$json = json_decode($request->getContent(), true);
// Loop Through Json And Insert Into Mysql
foreach ($json as $key => $value) {
$result = UserInvitesModel::where('mysql_user_id', $mysql_user_id)
->where(function ($q) use ($key, $value) {
$q->where('phone', $key)
->orWhere('email', $key);
})->get();
if (empty($result)) {
echo "does-not-exist ";
} else {
echo "exists ";
}
}
我总是存在
【问题讨论】:
-
您期望结果是什么?只有一个?多个?
-
每个键的结果
-
这是检查一个用户吗?那你为什么要使用循环而不是 WHERE IN
-
是的,一个用户使用
-
在这种情况下,您可以在一个查询中完成,而不是使用 foreach 循环。你只使用数组中的键,所以使用
array_keys($json)和whereIn()旁注:在编程时考虑使用好的变量名:你有一个变量$json包含一个数组。这令人困惑:-)