根据 'search term' 在其中的位置对 'search results' 进行排序
Sort 'search results' based on the position of the 'search term' in them
我想排序结果显示以用户第一个输入的字母开头的结果。
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
我想显示这样的结果:
你试试这个
Empresa::where("name", "like", $this->search . "%")->take(5)->get();
您不应在查询前放置 %
$business = Empresa::where("name", "LIKE", $this->search . "%")->orderBy("name")->take(5)->get();
在sql中使用 LIKE 查询时 % 作为通配符。如果你把 % 放在你的搜索字符串之前,它会搜索以你的字符串结尾,如果你把 % 放在你的搜索字符串之后,它会从你的字符串开始搜索。由于您将 % 放在搜索字符串前后,它会搜索包含您的搜索查询的每一行。
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());
}
我想排序结果显示以用户第一个输入的字母开头的结果。
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
我想显示这样的结果:
你试试这个
Empresa::where("name", "like", $this->search . "%")->take(5)->get();
您不应在查询前放置 %
$business = Empresa::where("name", "LIKE", $this->search . "%")->orderBy("name")->take(5)->get();
在sql中使用 LIKE 查询时 % 作为通配符。如果你把 % 放在你的搜索字符串之前,它会搜索以你的字符串结尾,如果你把 % 放在你的搜索字符串之后,它会从你的字符串开始搜索。由于您将 % 放在搜索字符串前后,它会搜索包含您的搜索查询的每一行。
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());
}