Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Eda
Backer | 220
+
0
-

Zdar.

Potřeboval bych v Nette\Database specifikovat již v query, že se bude hledat záznam obsahující dodanou hodnotu – tzn. bez nutnosti k hodnotě přilepovat z obou stran znaky „%“. Jde to?

V dibi jsem to dělal takto:

dibi::query("SELECT * FROM table WHERE name LIKE %~like~", $name);

Jelikož mé modelové třídy teď jedou na NDB, použít to nemůžu.

Co takto povolit zápis:

$db->table('table')->where('name LIKE %?%', $name);

Je to špatnej nápad? Jak to jinak řešit?

Editoval Eda (9. 9. 2012 19:46)

ViPEr*CZ*
Člen | 817
+
0
-
$db->table('table')->where('name LIKE ?', "%".$name."%");
Eda
Backer | 220
+
0
-

Jasně, samozřejmě :-) Jde mi ale právě o to, abych to specifikoval pomocí prvního parametru té funkce where(), nikoliv až přilepením % v druhém parametru, přesně jak uvádíš…

redhead
Člen | 1313
+
0
-

A proč je to přilepování takový problém?

Eda
Backer | 220
+
0
-

Moc se mi to nehodí do mé „Repository“. Při inicializaci třídy konkrétního repozitáře si nakonfiguruju, podle čeho můžu v daných entitách vyhledávat pomocí pole, kde klíč je budoucí možný „atribut“, podle kterého se bude hledat, a hodnota je právě první argument funkce where(). Na data, která pak někdo hledá, vůbec nesahám, jen je dosadím jako druhý parametr where(). Když jsem tento systém používal společně s dibi, použil jsem jen operátor %~like~ a na data jsem vůbec nemusel sahat. Teď to ale vypadá, že to budu trochu překopat a někde si ještě hlídat, že při vyhledávání přes „tamten“ parametr musím k hodnotě ještě přilepit zkraje procenta.