【问题标题】:Sql query returning unexpected result in PhP LaravelSql 查询在 PhP Laravel 中返​​回意外结果
【发布时间】:2020-01-04 00:14:43
【问题描述】:

我正在使用 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);
}

Postman response with first()

如果我将 first() 替换为 toSql()

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

Postman response with toSql()

但是如果我使用 User::first() 就可以了,而且 $email 也是正确的。

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

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

Postman result with User::first()

【问题讨论】:

  • 数据库中是否有 $user 与该电子邮件?
  • 是的,如果我返回电子邮件,我会得到“admin1@mail.pt”,如果我检索表的第一行,我会得到具有相同电子邮件的用户,因为这就是我正在尝试的得到

标签: php mysql laravel


【解决方案1】:

首先,当您执行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;
}

【讨论】:

  • 谢谢,它与 $request->email 一起使用,我在做 $email = $request 因为我认为 $request 本身就是电子邮件
  • 调试时的一个技巧是利用 dd() 方法转储变量并遍历不同的输入:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多