NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Translatable for Laravel

Dopyty a vyhľadávanie

Query scopy

HasTranslations pridáva tri scopy nad JSON cestou, ktoré fungujú na akejkoľvek databáze podporovanej Laravelom. Jazyk je predvolene jazyk aplikácie:

Topic::query()->whereLocale('name', 'Investing', 'en')->get(); // exact per-locale value (locale defaults to app locale)
Topic::query()->whereHasLocale('name', 'sk')->get();           // rows with a non-blank 'sk' value
Topic::query()->whereMissingLocale('name', 'sk')->get();       // rows missing 'sk' (feed an AI-fill queue)

Každý scope overí, že pole je prekladateľné (inak NotATranslatableAttributeException), a skontroluje formát jazyka (InvalidLocaleException), takže jazyk z requestu sa do výrazu JSON cesty nikdy nedostane neoverený. whereMissingLocale() sa prirodzene hodí k fronte na dopĺňanie prekladov:

Topic::query()
    ->whereMissingLocale('description', 'sk')
    ->each(fn (Topic $topic) => FillMissingTranslations::dispatch($topic, 'description'));

Vyhľadávanie naprieč jazykmi

Translatable::search() pridá vyhľadávanie bez ohľadu na veľkosť písmen v jednom či viacerých poliach a vo všetkých podporovaných jazykoch — ilike na PostgreSQL, like nad malými písmenami všade inde:

use RoundlyConsulting\Translatable\DataTransferObjects\TranslationSearch;
use RoundlyConsulting\Translatable\Facades\Translatable;

$topics = Translatable::search(
    Topic::query(),
    new TranslationSearch(fields: ['name', 'description'], term: 'invest'),
)->get();

// The term is a literal substring — this matches "100%", not every row:
Translatable::search(Topic::query(), new TranslationSearch(fields: ['name'], term: '100%'))->get();

Výraz sa berie ako doslovný podreťazec: %, _ a \ sa escapujú a SQL explicitne uvádza escape znak, takže hľadanie 100% alebo a_b nájde presne tieto riadky na každej databáze — vrátane SQLite a SQL Servera, ktoré nemajú predvolený escape znak pre LIKE. Hľadaný výraz sa vždy viaže ako parameter; do SQL sa dostane len názov poľa, overený ako obyčajný identifikátor. Vyhľadávanie bez polí (alebo bez podporovaného jazyka) nič nehľadá a nevráti žiadne riadky — nikdy nie všetky.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.