在PhP Laravel中返回意外结果的Sql查询

在PhP Laravel中返回意外结果的Sql查询,php,mysql,laravel,Php,Mysql,Laravel,我正在使用Laravel作为API,我试图从数据库中获取一个值,并使用postman进行测试,但当我尝试这样做时,它的响应为空,如果我看到正在进行的查询,它将返回一个?它应该返回字符串的位置 public function getUser(Request $request){ $email = $request; $user = User::where('email', $email)->first(); return $user; $response =

我正在使用Laravel作为API,我试图从数据库中获取一个值,并使用postman进行测试,但当我尝试这样做时,它的响应为空,如果我看到正在进行的查询,它将返回一个?它应该返回字符串的位置

public function getUser(Request $request){
    $email = $request;
    $user = User::where('email', $email)->first();
    return $user;
    $response = User::find($user.id)->first();
    return json_encode((string) $response->get(), true);
}

如果我用toSql()替换first()

但是如果我使用User::first(),它会工作,而且$email也是正确的

我很抱歉,如果标题有误导性,或者这个问题是错误的,我是新来的,不知道还有什么地方可以寻求帮助

编辑:有一个用户与我试图获得的电子邮件


首先,当您执行
toSql()
时,它使用准备好的语句,因此
是一个占位符,稍后将在其中放置值

这部分代码没有意义,请求是一个对象,您不能通过请求对象进行查询。您可以进行表单输入、查询或json输入,然后从那里获取它

$email = $request;
$user = User::where('email', $email)->first();
如何从表单、json或查询中获取输入

$email = $request->input($email);
Laravel
中,您不必担心编码问题,因此json_encode()是不必要的

把这一切放在一起想象一下这样的路由
localhost/api/user?电子邮件=admin@yoursite.com
。应该只是

public function show(Request $request) {
    $user = User::where('email', $request->input('email'))->first();

    return $user;
}

数据库中是否有$user包含该电子邮件?是的,如果我返回收到的电子邮件”admin1@mail.pt“,如果我检索到表的第一行,我会给用户发送一封相同的电子邮件,因为这正是我试图获取的内容。谢谢,它使用$request->email,我在做$email=$request,因为我认为$request本身就是emailA,调试时的技巧是使用dd()方法转储变量并遍历不同的输入:)
public function show(Request $request) {
    $user = User::where('email', $request->input('email'))->first();

    return $user;
}