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);
    }
}