Laravel查询获取数据即使不匹配

时间:2019-11-14 10:25:05

标签: laravel-5 eloquent get

我创建了一个get请求函数,该函数从URL http://localhost/user/list?id=1获取ID。现在,根据测试,即使它具有http://localhost/user/list?id=1DFasdf之类的字符,它也会检索列1的数据值。由于对此是新手,所以我对此感到有些困惑:

public function lists(Request $request)
{
    // $id value is 1 or 1DFasdf
    $id = $request->id;
    dd($this->roomList->where('id', $id)->get());
}

因此,当我显示带有或不带有哑字符的结果时,它将检索列1的数据,但是如果我首先使用其他id(db中不存在)或字符,则它将按预期工作。我该如何防止这种情况发生?

2 个答案:

答案 0 :(得分:1)

MySQL认为该值是字段类型的整数,例如是整数

如果id = 2并且您输入id =“ 2test”,则输出将是数据库中的id匹配项, 但是如果您输入id =“ test2”,则它将不会返回任何内容。

您还可以在MySQL查询中检查相同的内容。

Please check this question

如果您需要完全匹配,则首先需要在laravel中将该字段强制转换为char。

$this->roomList->whereRaw("CAST(id AS CHAR(12))", $id)->get()

答案 1 :(得分:1)

您应该阅读有关杂耍类型的信息:-

public function lists(Request $request)
{
    // $id value is 1 or 1DFasdf
    $id = $request->id;
    dd($this->roomList->where('id','like', $id)->get());
}