Model pracující s více tabulkami
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- aGr
- Člen | 45
V novém quickstartu jsou vytvořené modely jako potomky Nette\Database\Table\Selection a evidovány ve config.neon. Elegantní. Došel jsem však k modelu, který potřebuje pracovat s více tabulky (svoji a „pomocnými“). Napadlo mě, že by Model by potomkem Nette\Database\Connection a vždy zvolím tu správnou tabulku. Teď k otázkám:
- Je to správná úvaha?
- Pokud ano, proč dostávám od laděnky
Service 'page': Parameter $dsn in Method Nette\Database\Connection::__construct() is missing
? U „jednotabulkových“ (potomci Selection) vše funguje jak má. Config:
common:
php:
date.timezone: Europe/Prague
# session.save_path: "%tempDir%/sessions"
# zlib.output_compression: yes
nette:
session:
autoStart: smart
database:
default:
dsn: '%database.driver%:host=%database.host%;dbname=%database.dbname%'
user: %database.username%
password: %database.password%
services:
database: @Nette\Database\Connection
authenticator: Security\Authenticator
factories:
page: Model\PageModel
basicPage: Model\BasicPageModel
production < common:
parameters:
database:
driver: mysql
host: localhost
dbname: xx
username: xx
password: xx
development < common:
parameters:
database:
driver: mysql
host: localhost
dbname: yy
username: yy
password: yy
Díky za váš čas.
- Nox
- Člen | 378
Jen tak na doplnění
Tohle konkrétně je případ, kdy mi to paradoxně nepřijde úplně
jednoznačné
- Model tam nedědí od Connection, ale Selection
- QuickStart pravděpodobně používá tu podivnou terminologii že „model“ = „loader/repository“
Tudíž pokud má model poskytovat nějaký vybraný úsek databáze, pak se dá IS-A uznat. Vzhledem k tomu, že v NDB funguje joinování, tak by to snad mělo jít udělat i nad víc tabulkama.
Ale samozřejmě kdybych to dělal, tak bych taky zvolil kompozici, asi to v QS není zvolené úplně šťastně