База данни Nette
Nette Database е мощен и елегантен слой за бази данни за PHP с акцент върху простотата и интелигентните функции. Той предлага два допълващи се начина за работа с вашите данни – с помощта на Изследователя за бърза разработка или с помощта на SQL за пълен контрол върху заявките.
SQL начин
- Безопасни параметризирани заявки
- Прецизен контрол върху структурата на SQL заявките
- Идеални за писане на сложни заявки с разширени функции
- Оптимизиране на производителността с помощта на специфични SQL функции
Пътят на изследователя
- Бърза разработка без писане на SQL
- Интуитивна обработка на връзките между таблиците
- Автоматично оптимизиране на заявките
- Чудесно за бързо и удобно взаимодействие с базата данни
Инсталация
Можете да изтеглите и инсталирате библиотеката, като използвате Composer:
Поддържани бази данни
Nette Database поддържа следните бази данни:
Сървър за бази данни | Име на DSN | Поддръжка на Explorer |
---|---|---|
MySQL (>= 5.1) | mysql | YES |
PostgreSQL (>= 9.0) | pgsql | ДА |
SQLite 3 (>= 3.8) | sqlite | ДА |
Oracle | oci | НЕ |
MS SQL (PDO_SQLSRV) | sqlsrv | ДА |
MS SQL (PDO_DBLIB) | mssql | НЕ |
ODBC | odbc | НЕ |
Два подхода за работа с бази данни
С Nette Database можете да пишете SQL заявки директно (SQL начин) или да оставите SQL да се генерира автоматично (Explorer начин). Нека видим как двата подхода решават едни и същи задачи:
SQL начин – писане на SQL заявки
Начин на Explorer – автоматично генериране на SQL
Подходът на Explorer генерира и оптимизира SQL заявките автоматично. В примера по-горе примерът за начин на SQL генерира N+1 заявки (една за авторите и една за книгите на всеки автор), докато Изследователят извършва само две оптимизирани заявки – една за авторите и друга за всички техни книги.
Можете свободно да комбинирате двата подхода в приложението си според нуждите.
Свързване и конфигуриране
За да се свържете с базата данни, просто създайте инстанция на класа Nette\Database\Connection:
Параметърът $dsn
(име на източника на данни) следва същия формат,
който използва PDO,
например host=127.0.0.1;dbname=test
. Ако връзката се провали, се изхвърля
Nette\Database\ConnectionException
.
По-удобен метод обаче е да се използва конфигурацията
на приложението. Добавете раздел database
и необходимите обекти
ще бъдат създадени, включително панел за база данни в лентата за
отстраняване на грешки на Tracy.
След това обектът за връзка може да бъде изтеглен като услуга от контейнера DI, напр:
За повече информация вижте Конфигурация на базата данни.
Ръчно създаване на Explorer
Ако не използвате контейнера Nette DI, можете ръчно да създадете
инстанция на Nette\Database\Explorer
:
Управление на връзките
Когато създавате обект Connection
, той се свързва автоматично с
базата данни. Ако искате да забавите свързването, разрешете мързеливия
режим в конфигурацията, като зададете lazy
, или
го направете по следния начин:
За да управлявате връзката, използвайте методите connect()
,
disconnect()
и reconnect()
.
- Методът
connect()
установява връзка, ако тя още не е установена, и може да хвърлиNette\Database\ConnectionException
. disconnect()
прекъсва връзката с базата данни.reconnect()
прекъсва връзката и след това се свързва отново с базата данни, като може да хвърли иNette\Database\ConnectionException
.
Освен това можете да наблюдавате събитията, свързани с връзката, като
използвате събитието onConnect
, което представлява масив от обратни
извиквания, изпълнявани след свързване с базата данни.
Лентата за отстраняване на грешки на Tracy
Ако използвате Tracy, панелът Database (База данни) в лентата за отстраняване на грешки се активира автоматично. В него се показват всички изпълнени заявки, техните параметри, времето на изпълнение и мястото в кода, където са били извикани.
