我正面临一个非常奇怪的问题。问题是不久。
$x = some_object;
return response()->json($x) => {}
return response()->json(some_object) => {some_object}
这是所有的代码(代码在 else 语句里面)。
public function checkCalls(Request $req)
{
$active_call = VideoCall::where("receiver_id", (int) $req->input("user_id"));
if ($active_call->where("call_situation", "call")->exists()) {
$active_call = $active_call->first();
$caller_id = $active_call->caller_id;
$caller = User::where("id", $caller_id)->first();
$caller_name = $caller->name;
$caller_img = $caller->image;
return response()->json([
"friend" => $caller_id,
"caller_name" => $caller_name,
"caller_img" => $caller_img
]);
} else if ($active_call->where("call_situation", "yes")->exists()) {
return response()->json("gorusme yapıyor");
} else if ($active_call->where("call_situation", "decline")->exists()) {
$caller_id = $active_call->where("call_situation", "decline")->first()->caller_id;
return response()->json("arama red edildi", $caller_id);
} else {
return response()->json("arama yok");
//this code runs, I m changing here to get different returns
}
}
当我在else括号里改的时候,这就会返回 true
return response()->json(VideoCall::where("receiver_id", (int) $req->input("user_id"))->exists());
但这一回 false
:
return response()->json($active_call->exists());
$active_call
由于某种原因,返回一个空对象。$active_call
变化 if()
括号,但我找不到任何可以改变它的东西。所以为什么会发生这种情况?
*编辑:使问题更加清晰,添加了一个较短版本的问题。
*编辑 2: else 语句中的代码正在运行。我改变了那个返回语句以得到不同的结果。
这是因为你重新分配了 $active_call
在你的功能中。
$active_call = $active_call->first();
它不再是一个 Builder
但却是一个 VideoCall
.
所以,这条线。
return response()->json($active_call->exists());
实际上是:
return response()->json(VideoCall::where("receiver_id", (int) $req->input("user_id"))->first()->exists());
请注意附加的 ->first()