Laravel - 你如何选择在哪里?

raz*_*nsg 2 php select laravel sql-like

如果我尝试WHERE email = ?它的工作,但如果我尝试下面的代码它不会.有任何想法吗?谢谢.

DB::connection('operator')->select("SELECT * FROM users WHERE email LIKE '%?%'", array('test'));
Run Code Online (Sandbox Code Playgroud)

这就是它的getQueryLog()样子.

  array(3) {
    ["query"]=>
    string(213) "SELECT * FROM users WHERE email LIKE '%?%'"
    ["bindings"]=>
    array(1) {
      [0]=>
      string(1) "test"
    }
    ["time"]=>
    float(1.45)
  }
Run Code Online (Sandbox Code Playgroud)

luk*_*ter 20

你必须把%绑定数组放入:

DB::connection('operator')
    ->select("SELECT * FROM users WHERE email LIKE ?", array('%test%'));
Run Code Online (Sandbox Code Playgroud)

另外,使用Laravel的Eloquent ORMQuery Builder会容易得多

例如,查询构建器的外观如下:

DB::connection('operator')->table('users')->where('email', 'LIKE', '%test%')->get();
Run Code Online (Sandbox Code Playgroud)

%在使用用户提供的字符串时,请记住要逃避任何问题!像这样:

$escapedInput = str_replace('%', '\\%', $input);
Run Code Online (Sandbox Code Playgroud)

  • 你必须记住在用户提供的字符串中转义任何`%`. (2认同)

小智 7

它在 Laravel 5.7 上非常适合我,如下所示:

$name = "the value that you want to find in the column";
Model::where("field", "LIKE", "\\" . $name . "%")->get()
Run Code Online (Sandbox Code Playgroud)

$name 是您要在列中找到的字符串的一部分,并用“%”连接

"field" 是列的字段,您可以放置​​“%”而不是“\”(% 所有字符)

$TheResult = MyModel::where("myFieldOfMyModel", "like", "%" . $name . "%")->get();
Run Code Online (Sandbox Code Playgroud)

它在 Laravel 5.7 上非常适合我

谢谢