databaza a stlpec int(5), atribut UNSIGNED ZEROFILL
- pn-pm
- Člen | 20
mam v DB stlpec definovany ako int(5), s atributom UNSIGNED ZEROFILL a defaultom ‘00000’, takze ked do neho napr zapisem cislo 123, vrati mi ho stare bezne php (5.6, mysql_query) ako 00123, ale Nette to ako integer “pretypuje” na bezny int, a vrati bez nul na zaciatku ja vsak potrebujem vratit korektne celu hodnotu
- neda sa nejak vratit “neosetrena hodnota” ?
- vratit hodnota int pretypovana na string, aj s nulami ?
mam problem i s getReflection(), som dufal ze tam zistim
ci viem vytiahnut stav atributov stlpca…
s nastavenim php 8.1 v composeri mi nedava ziadny update na vyssiu verziu,
ale aj tak mi pada na
Call to undefined method
Nette\Database\Connection::getReflection()
a composer mi pise ze mam nette/database v3.1.9 , a reflection je od
3.2.1 tusim ?
ako to tam dostanem ?
function __construct(
Nette\Database\Connection $DB,
Nette\Database\Explorer $Explorer,
// ..
) {
$reflection = $DB->getReflection(); // neprojdes!
}
zachytil som ze sa vraj da skusit
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true);
ale to neviem ci je uplne vonco, lebo to meni cely fetch ?
bonusovy dotaz – da sa pouzit Database Conventions – aby extendovalo autodiscovered, a nejak iba tu na konkretne pole si to nejak nastavit v convetions ? aby som nemusel predefinovavat pri zmene tabulek rucne vsecko ?
Editoval pn-pm (16. 10. 12:10)
- Marek Bartoš
- Nette Blogger | 1260
Nette to ako integer “pretypuje” na bezny int
Nevím, zda je to případ i nette/database, ale většinou se pro numerický string v databázi používá typ decimal. Specificky pro zerofill by bylo fajn se podívat, jak to řeší jiné databázové vrstvy (doctrine, nextras) a napsat případně feature request.
composer mi pise ze mam nette/database v3.1.9 , a reflection je od 3.2.1 tusim ? ako to tam dostanem ?
Zjisti co ti brání v aktualizaci, přes
composer why-not nette/database 3.2.1
Editoval Marek Bartoš (16. 10. 12:34)
- pn-pm
- Člen | 20
Marek Bartoš napsal(a):
Nette to ako integer “pretypuje” na bezny int
Nevím, zda je to případ i nette/database, ale většinou se pro numerický string v databázi používá typ decimal. Specificky pro zerofill by bylo fajn se podívat, jak to řeší jiné databázové vrstvy (doctrine, nextras) a napsat případně feature request.
no uvidme
composer mi pise ze mam nette/database v3.1.9 , a reflection je od 3.2.1 tusim ? ako to tam dostanem ?
Zjisti co ti brání v aktualizaci, přes
composer why-not nette/database 3.2.1
ok, trochu zapas s verziami, ale podla navodu na upgrade nette som to nejak
rozchodil
https://doc.nette.org/…tions/to-3-2
dost ma nastvalo ze v template som uz v basePResentwru nastavoval $this->template->user, vlastny objekt s rolemi, identitou atd, ne uplne orig typovany „getUser()“… a po prechode mi to zacalo pindat ze v template nesmim nastavit vlastny class na variable user, ze uz je nastaveny, ale zas ked som dal bdump, tak ze nenastaveny… asi je uz nekde natypovany, a to sa i resit nechcelo, ach jo. zabava :D.. premenoval som si variable a ide, ale zas haluza dalsia
kazdopadne, uz mi ide reflecion, a vidim na stlpci
name: '....'
table: Nette\Database\Reflection\Table
nativeType: 'INT'
size: 5
nullable: false
default: '00000'
autoIncrement: false
primary: false
vendor: array
'field' => 'voucher'
'type' => 'int(5) unsigned zerofill' // <----
'collation' => null
'null' => 'NO'
'key' => ''
'default' => '00000'
takze dokazem nejak aspon si dokazat ze Nette o tom zerofill vie
viem ze existuju nejake SQL literals… ale to su z SQL hotove hodnoty jako
now() a pod..
ale nemame v Nette nejaky typecasting pre DB vystup premennych kde sa to
zohladni ?
Editoval pn-pm (16. 10. 13:33)