Otázka 07 / 15
Bunda od O'Neillu
Zákaznice si na chatu stěžuje, že na e-shopu nenajde bundu značky O'Neill: místo výsledků vidí chybovou stránku, přitom Nike nebo Adidas se najdou bez problému. Správce k tomu dodává, že v logu přes víkend přibyly stovky chyb z vyhledávání, všechny z jedné IP adresy. Tady je část modulu, která vyhledávání obsluhuje. Co se děje a co bys udělal?
Ctrl/Cmd+klik na metodu, třídu nebo konstantu otevře její deklaraci, Alt+← vrátí zpět.
app › Repositories › ProductSearchRepository.php
<?php declare(strict_types=1);
namespace App\Repositories;
use Illuminate\Database\ConnectionInterface;
use stdClass;
final class ProductSearchRepository
{
private const string TABLE = 'products';
public function __construct(
private readonly ConnectionInterface $database,
)
{}
/** @return list<stdClass> */
public function searchActive(string $phrase, int $limit): array
{
$sql = 'SELECT id, name, brand, price_in_hellers FROM ' . self::TABLE
. " WHERE is_active = 1 AND (name LIKE '%{$phrase}%' OR brand LIKE '%{$phrase}%')"
. " ORDER BY brand = '{$phrase}' DESC, name"
. " LIMIT {$limit}";
return $this->database->select($sql);
}
}