Nette\Database\Selector a jazykové verzie
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- dakota
- Člen | 148
Je možné bližšie uviesť ako to riešiť, nie každý má možnosť
zúčastniť sa spomínaného školenia. Zaujímalo by ma hlavne či sa
jazyková verzia nastavuje zvlášť pre každú tabuľku alebo stĺpec alebo je
to riešené všeobecne, že zavolaním $article["title_"]
,
$category["name_"]
sa vlastne vytiahne požadovaná jazyková
verzia?
Kedy môžme očakávať v Nette\Database\Selector možnosť použivať vlastné, resp. podedené TableRow a DatabaseReflection?
Editoval dakota (23. 1. 2011 20:46)
- dakota
- Člen | 148
Pekné riešenie. Ale to funguje vlastne len v prípade
$category['name_']
, $category->name_
.
Šlo by to zovšeobecniť až do takejto podoby?
$category = $db->table('category')->select('id, name_, parent')->order('name_');
$category = $db->table('category')->where('name_ LIKE ?', 'a%');
echo $category->name_;
vykonané dotazy:
SELECT id, name_en, parent FROM category ORDER BY name_en;
SELECT name_en FROM category WHERE name_en LIKE 'a%';
ako náhrada:
$category = $db->table('category')->select("id, name_$lang, parent")->order("name_$lang");
$category = $db->table('category')->where("name_$lang LIKE ?", 'a%');
echo $category->name_;
Mohlo by sa pritom napr. použiť
preg_replace('~_(?!\w)~', '_' . $lang, $s)
.
Editoval dakota (24. 1. 2011 11:27)