簡體   English   中英

Laravel - 你如何選擇在哪里?

[英]Laravel - how do you SELECT WHERE LIKE?

如果我嘗試WHERE email = ? 它工作,但如果我嘗試下面的代碼,它不會。 有任何想法嗎? 謝謝。

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

這就是getQueryLog()樣子。

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

你必須把%放在bindings數組中:

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

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

例如,查詢構建器的外觀如下:

DB::connection('operator')->table('users')->where('email', 'LIKE', '%test%')->get();

在使用用戶提供的字符串時, 請記住要逃避任何% 像這樣:

$escapedInput = str_replace('%', '\\%', $input);

這對laravel 5.7來說非常適合這樣:

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

$name是要在列中找到的字符串的一部分,其中以“%”為標題

"field"是列的字段,您可以將“%”替換為“\\”(%all chars)

$TheResult = MyModel::where("myFieldOfMyModel", "like", "%" . $name . "%")->get();

它對laravel 5.7來說非常適合我

謝謝

只是逃避你的變量工作:

$name = "_";
Model::where("field", "LIKE", "\\" . $name . "%")->get()

希望這有助於某人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM