我想訂購顯示那些以用戶首先輸入的字母開頭的結果。
public $search = "";
public function render()
{
$business = Empresa::where("name", "like", "%" . $this->search . "%")
->orderBy("name")
->take(5)
->get();
return view('livewire.general.simpleSearch', compact("business"));
}
我的網站目前顯示的結果如下:

相反,當用戶鍵入時,mer我想顯示如下結果:

uj5u.com熱心網友回復:
public function render()
{
$search = $this->search;
$business = Empresa::where("name", "like", "%$search%")
->get();
$sorted = $business->sortBy(function ($result) use ($search) {
return strpos($result->name, $search);
})->take(5);
return view('livewire.general.simpleSearch')
->with('business', $sorted->values()->all());
}
uj5u.com熱心網友回復:
你試試這個
Empresa::where("name", "like", $this->search . "%")->take(5)->get();
uj5u.com熱心網友回復:
您不應該在查詢之前放置 %
$business = Empresa::where("name", "LIKE", $this->search . "%")->orderBy("name")->take(5)->get();
在 sql 中使用 LIKE 查詢時 % 充當通配符。如果您將 % 放在搜索字串之前,它將以您的字串結尾進行搜索,如果您將 % 放在搜索字串之后,它將以您的字串開頭進行搜索。由于您在搜索字串之前和之后放置 % ,因此它將搜索包含您的搜索查詢的每一行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/437140.html
