首页 > 解决方案 > Sql 查询在 PhP Laravel 中返​​回意外结果

问题描述

我正在使用 Laravel 作为 API,我正在尝试从数据库中获取一个值并使用邮递员进行测试,但是当我尝试这样做时,它会响应空白,如果我看到正在执行的查询,它会返回一个 ? 它应该在哪里返回一个字符串

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);
}

邮递员响应 first()

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

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

使用 toSql() 的邮递员响应

但是,如果我执行 User::first() 它可以工作,并且 $email 也是正确的。

如果标题具有误导性或问题提出错误,我很抱歉,我是新手,不知道在哪里寻求帮助。

编辑:有一个用户使用我要获取的电子邮件

邮递员结果与 User::first()

标签: phpmysqllaravel

解决方案


首先,当您这样做时,toSql()它使用准备好的语句,?稍后将放置值的占位符也是如此。

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

$email = $request;
$user = User::where('email', $email)->first();

如何从表单、json 或查询中获取输入。

$email = $request->input($email);

Laravel你不必担心编码所以 json_encode() 是不必要的。

把它们放在一起,像这样对路线进行成像localhost/api/user?email=admin@yoursite.com。应该无外乎。

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

    return $user;
}

推荐阅读