DB
, (*1)
Π Π°Π±ΠΎΡΠ° Ρ Π±Π°Π·ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ - Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΠΠ, ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ., (*2)
Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ \ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ:, (*3)
-
Manager
- ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
. Π₯ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΡΠΌΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΠ.
-
Schema
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΠ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡΡ Repository, Item.
-
Repository
- ΠΠ±ΡΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΠ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Item.
-
Collection
- Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Item, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΠΈ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ.
-
Item
- ΠΠ±ΡΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π·Π°ΠΏΠΈΡΡ Π² ΠΠ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ Ρ Π½ΠΈΠΌ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΠ
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Manager
, ΠΈ Π·Π°Π΄Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄:, (*4)
~~~ php
$manager->addConnection($host, $user, $pass, $db_name, $db_charset = 'utf8', $connection_name = null);, (*5)
ΠΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π΅ΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΈΠΌΡ default, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½ΠΈΠΌ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
~~~ php
$manager->getConnection($name = null); // ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ PDO
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΡΠΈΠ½Π³Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ
ΠΏΡΠ΅ΡΠΈΠΊΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ°Π±Π»ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ:, (*6)
~~~ php
$manager->setPrefix($prefix);, (*7)
Π’ΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅, Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ Ρ ΡΡΠΈΠΌ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ.
**ΠΠ°ΠΆΠ½ΠΎ!** Π Π·Π°ΠΏΡΠΎΡΠ°Ρ
, ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, ΠΏΡΠ΅ΡΠΈΠΊΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ Π²ΡΡΡΠ½ΡΡ!
## ΠΡΡΠΌΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΠ
ΠΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° Manager ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ PDO ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π°ΠΏΡΡΠΌΡΡ, Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
.
ΠΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² Π·Π°ΠΏΡΠΎΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΡΠ΅Π· PDO-ΠΏΠ»Π΅ΠΉΡΡ
ΠΎΠ»Π΄Π΅ΡΡ Π²ΠΈΠ΄Π° `WHERE id = :id`, Π° ΡΠ°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ $values.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΏΡΠΎΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΡΡΠΎΠΊΡ, ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Query, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ [QueryBuilder`ΠΎΠΌ](https://github.com/sqrt-pro/QueryBuilder).
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° Query ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π·Π°ΠΏΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
~~~ php
// ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ Π² ΠΠ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ \PDOStatement
$manager->query($sql, $values = null, $connection = null)
// ΠΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ° Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΡΡ
ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΡ $key, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠΏΠΈΡΠΊΠ°.
$manager->fetchAll($sql, $key = null, $values = null, $connection = null)
// ΠΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ Π² Π²ΠΈΠ΄Π΅ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°
$manager->fetchOne($sql, $values = null, $connection = null)
// ΠΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ°. $col - ΠΈΠΌΡ ΡΡΠΎΠ»Π±ΡΠ°, ΠΈΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° Π² ΠΎΡΠ²Π΅ΡΠ΅.
$manager->fetchValue($sql, $col = null, $values = null, $connection = null)
// ΠΡΠ±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ»Π±Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°
$manager->fetchColumn($sql, $col = null, $values = null, $connection = null)
// ΠΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² Π²ΠΈΠ΄Π° ΠΊΠ»ΡΡ => Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π·Π°ΠΏΡΠΎΡΠ°
$manager->fetchPair($sql, $values = null, $connection = null)
// ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ $callable ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ.
// ΠΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ΅ΠΊΡΡΡΡ ΡΡΡΠΎΠΊΡ $callable($row)
$manager->each($sql, $callable, $values = null, $connection = null)
Π ΡΠ΅Π»ΡΡ
ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ²:, (*8)
~~~ php
$manager->setDebug($debug = true); // ΠΠΊΠ»ΡΡΠΈΡΡ ΠΎΡΠ»Π°Π΄ΠΊΡ, (*9)
$manager->getQueries(); // ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ², {query:..., values:..., time:...}
$manager->getQueriesCount(); // ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΠΠ
$manager->getQueriesTime(); // Π‘ΡΠΌΠΌΠ°ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΠΠ, (*10)
## Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
ΠΠ»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Manager ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
~~~ php
$manager->beginTransaction($connection = null); // ΠΠ°ΡΠ°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ $connection
$manager->commit($connection = null); // ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ $connection
$manager->rollback($connection = null); // ΠΡΠΊΠ°ΡΠΈΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ $connection
$manager->inTransaction($connection = null); // ΠΡΠΎΠ²Π΅ΡΠΊΠ°, Π°ΠΊΡΠΈΠ²Π½Π° Π»ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ $connection
ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π²Π½ΡΡΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
~~~ php
$manager->transaction(\Closure $closure, $connection = null); // ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ $closure Π²Π½ΡΡΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ $connection, (*11)
ΠΠ±ΡΠ΅ΠΊΡ `$closure` Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ - ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ `Manager`.
ΠΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΊΡΡΡΠ°, ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° (`commit`) ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ `$closure`.
ΠΡΠ»ΠΈ `$closure` Π²ΡΠΊΠΈΠ½Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠ°Π·Π°ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΌΠ΅Π½Π΅Π½Π° (`rollback`) ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ±ΡΠΎΡΠ΅Π½ΠΎ Π΄Π°Π»Π΅Π΅.
## Π‘Ρ
Π΅ΠΌΠ°
Π‘Ρ
Π΅ΠΌΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΠ ΠΈ ΠΈΡ
ΡΠΈΠΏΠΎΠ². ΠΠΎ ΡΡ
Π΅ΠΌΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΠ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡ
Π΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΡ
Π΅ΠΌΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² `init()` ΠΈ `relations()`
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΏΠΎΠ»Π΅ΠΉ:
~~~ php
$schema->addInt($col, $default = 0, $signed = true, $length = 10)
$schema->addBool($col)
$schema->addChar($col, $length = 255)
$schema->addFloat($col, $length = 10, $decimals = 2, $signed = false)
$schema->addText($col, $size = false)
$schema->addTime($col, $unix = true)
$schema->addTimeCreated($col = 'created_at')
$schema->addTimeUpdated($col = 'updated_at')
ΠΠ°ΠΆΠ½ΠΎ! Π’Π°Π±Π»ΠΈΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ addTimeCreated
ΠΈΠ»ΠΈ addTimeUpdated
, Ρ.ΠΊ. MySQL Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ
ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ Ρ CURRENT_TIME. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°Π΄Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° addTime
, (*12)
ΠΡΠΎΠΌΠ΅ "ΠΎΠ±ΡΡΠ½ΡΡ
" ΠΏΠΎΠ»Π΅ΠΉ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, ΠΏΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ., (*13)
~~~ php
// ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ ΡΠ°Π±Π»ΠΈΡΡ
$schema->addId($col = 'id'), (*14)
// ΠΠΎΠ»Π΅ INT ΠΈ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΎΠΉ
$schema->addBitmask($col, array $options, $default = 0), (*15)
// ΠΠΎΠ»Π΅ ENUM, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ Π²ΡΠ±ΠΎΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²
$schema->addEnum($col, array $options, $default = null), (*16)
// ΠΠΎΠ»Π΅ TEXT, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄Π°Π½Π½ΡΡ
ΠΎ ΡΠ°ΠΉΠ»Π΅
$schema->addFile($column), (*17)
// ΠΠΎΠ»Π΅ TEXT, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄Π°Π½Π½ΡΡ
ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
$schema->addImage($column, array $size_arr = null), (*18)
## ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ
ΠΊΠ»Π°ΡΡΠΎΠ² ORM
ΠΠΎ ΡΡ
Π΅ΠΌΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π³Π΅ΡΡΠ΅ΡΡ\ΡΠ΅ΡΡΠ΅ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΠΎΠ»Π΅ΠΉ, Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΈΡ
ΡΠΈΠΏΠ°, Π° ΡΠ°ΠΊΠΆΠ΅
ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ\ΠΌΠ΅ΡΠΎΠ΄Ρ\ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
### ΠΠ°ΡΡ
* Π‘Π΅ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π΄Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ `strtotime()`
~~~ php
$item->setCreatedAt('2015-01-01 12:45');
$item->setCreatedAt('-7 days');
~~~
* ΠΠ΅ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ date()
~~~
$item->getCreatedAt(false, 'd.m.Y H:i');
~~~
### Float
* ΠΠ΅ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ `number_format()`
~~~ php
$item->getPrice(); // 12345.67
$item->getPrice(false, 1, ',', ' '); // 12 345,7
~~~
### ENUM
ΠΠΎΠ»Π΅ ENUM ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ
ΠΎΠΏΡΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
~~~ php
$schema->addEnum('status', array('new', 'progress', 'done'));
- ΠΠ»Ρ Π²ΡΠ΅Ρ
ΠΎΠΏΡΠΈΠΉ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π²ΠΈΠ΄Π°
[column]_[value]
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ STATUS_NEW, STATUS_DONE.
-
ΠΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² Π½Π°ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΠΈ Π·Π°Π΄Π°ΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, (*19)
~~~ php
protected static $status_arr = array(
self::STATUS_NEW => 'new',
self::STATUS_PROGRESS => 'progress',
self::STATUS_DONE => 'done',
);
~~~, (*20)
-
ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΠ΅ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠΌΠ΅Π½, Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, (*21)
- ΠΡΠ΄ΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
- ΠΠ΅ΡΡΠ΅Ρ Π²ΠΈΠ΄Π°
get[column]Name()
, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠΌΠ΅Π½.
- Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄
Get[column]Arr()
, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π½
- Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄
GetNameFor[column]($status)
, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΈΠΌΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Bitmask - Π±ΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ°
ΠΠΈΡΠΎΠ²Π°Ρ ΠΌΠ°ΡΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈΡ
Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ»Π΅.
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ENUM Π² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ., (*22)
~~~ php
$schema->addBitmask('status', array('payed', 'delivered', 'happy')), (*23)
* ΠΠ»Ρ Π²ΡΠ΅Ρ
ΠΎΠΏΡΠΈΠΉ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π²ΠΈΠ΄Π° `[column]_[value]`, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ ΠΊΠ°ΠΊ 2 Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΊΠ»ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° (0, 1, 2, ...).
~~~ php
const STATUS_PAYED = 1;
const STATUS_DELIVERED = 2;
const STATUS_HAPPY = 4;
~~~
* ΠΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² Π½Π°ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΠΈ Π·Π°Π΄Π°ΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°
~~~ php
protected static $status_arr = array(
self::STATUS_PAYED => 'payed',
self::STATUS_DELIVERED => 'delivered',
self::STATUS_HAPPY => 'happy',
);
~~~
* Π‘Π΅ΡΡΠ΅ΡΡ Π΄Π²ΡΡ
ΡΠΈΠΏΠΎΠ²:
~~~ php
$item->addStatus(Item::STATUS_PAYED);
$item->setStatus(array(Item::STATUS_PAYED, Item::STATUS_HAPPY));
~~~
* ΠΠ΅ΡΡΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ²:
~~~ php
$item->getStatus(); // [1, 4]
~~~
* ΠΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ»Π°Π³:
~~~ php
$item->hasStatus(Item::STATUS_PAYED);
~~~
**ΠΠ°ΠΆΠ½ΠΎ!** ΠΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΠΊΠΎΠΉ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΌΠ΅Π½ΡΡΡΠΈΡ
ΡΡ Π΄Π°Π½Π½ΡΡ
.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅-ΠΊ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ-ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΈ.
### File
Π’ΠΈΠΏΠΎΠ²Π°Ρ Π·Π°Π΄Π°ΡΠ° ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°ΠΉΠ»Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΡΡΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
ΠΠ°ΡΠ°ΡΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
Π²Π½ΡΡΡΠΈ ΠΠ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡΠΈ Π½Π° Π΄Π΅Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
~~~ php
$schema->addFile('pdf')
Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ TEXT, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ°ΠΉΠ»Π°., (*24)
- Π‘Π΅ΡΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°ΠΉΠ»Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΡΠΈ
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ
setFilesPath()
- ΠΠ΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π³Π΅ΡΡΠ΅ΡΡ Π½Π° Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ°ΠΉΠ»Π° Π²ΠΈΠ΄Π° get[column][property], Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ
column = "pdf"
-
getPdf($default = false)
- ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ. ΠΡΡΡ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π·Π°Π΄Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· setPublicPath()
ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
-
getPdfPath($default = false)
- ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅
-
getPdfUrl($default = false)
- ΠΎΠ±ΡΠ΅ΠΊΡ URL, Π²Π΅Π΄ΡΡΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ
-
getPdfSize($human = true)
- ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ $human == true, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
-
getPdfName($default = false)
- Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
-
getPdfExtension($default = false)
- ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
Image
Π’ΠΈΠΏΠΎΠ²Π°Ρ Π·Π°Π΄Π°ΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ½ΠΎΠ³Π΄Π° Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ°Π·ΠΌΠ΅ΡΠ°Ρ
ΠΈ\ΠΈΠ»ΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ
Π²ΠΎΠ΄ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΠ°Ρ
., (*25)
~~~ php
$schema->addImage('image', array('thumb', 'medium', 'orig');, (*26)
Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ TEXT, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ°ΠΉΠ»Π°.
* Π‘Π΅ΡΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°ΠΉΠ»Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΡΠΈ
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ `setFilesPath()`.
* ΠΡΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ `prepareImageFor[column]($file, $size)`, Π³Π΄Π΅
size - ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
Π² ΡΡ
Π΅ΠΌΠ΅.
ΠΡΠ»ΠΈ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ `SQRT\Image`, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΎ ΠΈΠ· Π½Π΅Π³ΠΎ, ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
* ΠΠ΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π³Π΅ΡΡΠ΅ΡΡ Π½Π° Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ°ΠΉΠ»Π°, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠΈΠΏΡ File, Π½ΠΎ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΠΈΠ΄Π° `get[column][size][property]`.
* ΠΠ»ΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ `column = "image", size = "thumb"`
* `getImageThumbWidth($default = false)` - ΡΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
* `getImageThumbHeight($default = false)` - ΡΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
* `getImageThumbImg($alt = null, $attr = null, $default = false)` - Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ΅Π³Π° `Img` Ρ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΡΡΠΈ ΠΊ ΡΠ°ΠΉΠ»Ρ, ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ
## ΠΠ½Π΄Π΅ΠΊΡΡ
Π‘Ρ
Π΅ΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ.
~~~ php
$schema->addIndex($column, $_ = null)
$schema->addUniqueIndex($column, $_ = null)
Π‘Π²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ»ΡΡΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ
InnoDB ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ:, (*27)
~~~ php
$schema->addForeignKey($col, $schema, $foreign_id = null, $on_delete = null, $on_update = null), (*28)
ΠΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ²ΡΠ·Π΅ΠΉ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄ΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ
Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ²ΡΠ·Π΅ΠΉ.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΡΠ²ΡΠ·Π΅ΠΉ, ΡΠ°ΠΊ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ (Book) ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½
Π°Π²ΡΠΎΡ (Author), Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Ρ Π°Π²ΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ½ΠΈΠ³. Π’.Π΅. ΡΠ²ΡΠ·Ρ `Book -> Author` ΠΎΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ, Π½ΠΎ
`Author -> Book` ΡΠΆΠ΅ ΠΎΠ΄ΠΈΠ½-ΠΊ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΠ²ΡΠ·Π΅ΠΉ ΠΈ Π΅Ρ ΡΠΈΠΏ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΡ
Π΅ΠΌΠ΅.
**ΠΠ°ΠΆΠ½ΠΎ!** ΠΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ, ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠ²ΡΠ·ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ InnoDB.
### ΠΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡ
addOneToOne($schema, $col = null, $foreign_id = null, $on_delete = null, $on_update = null, $name = null, $one = null), (*29)
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠΏ ΡΠ²ΡΠ·Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° ID Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π‘Π²ΡΠ·Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ `$col` INT UNSIGNED DEFAULT NULL Π² ΡΠ΅ΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ.
**ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:** ΠΎΠ±ΡΠ΅ΠΊΡ Book ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π΅ author_id, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ Author.
~~~ php
$schema->addOneToOne('Authors', 'author_id', 'id', Schema::FK_RESTRICT, Schema::FK_RESTRICT)
ΠΡΠ»ΠΈ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΡΠ°Π±Π»ΠΈΡ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΡΠΎΠ»Π±ΡΠΎΠ²:, (*30)
~~~ php
$schema->addOneToOne('Authors'), (*31)
ΠΠΎΠ³Π΄Π° Π½Π° ΠΎΠ΄Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΡΠ·Π΅ΠΉ, ΠΈΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΡ
Π΅ΠΌΡ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
`$name` ΠΈ `$one` ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ:
~~~ php
$schema->addOneToOne('Authors', 'author_id', 'id', Schema::FK_RESTRICT, Schema::FK_RESTRICT, 'MyAuthors', 'MyAuthor')
ΠΠ±ΡΠ΅ΠΊΡ Book Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ:, (*32)
~~~ php
/** @return \Author */
public function getMyAuthor($reload = false), (*33)
/** @return static */
public function setMyAuthor(\Author $my_author), (*34)
/** @return \Author */
protected function findOneMyAuthor($id), (*35)
### ΠΠ΄ΠΈΠ½-ΠΊ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
~~~ php
addOneToMany($schema, $foreign_id = null, $col = null, $name = null, $one = null)
Π‘Π²ΡΠ·Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΡ
ΡΠ²ΡΠ·Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΊΠ°Π·Π°Π½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ.
Π ΡΠ΅ΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΠ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ Π²Π½ΠΎΡΠΈΡΡΡ., (*36)
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: ΠΠ±ΡΠ΅ΠΊΡ Author ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΡΠ·Ρ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Book, Ρ ΠΊΠΎΡΠΎΡΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° Π² ΠΏΠΎΠ»Π΅ author_id., (*37)
~~~ php
$schema->addOneToMany('Books', 'book_id', 'id'), (*38)
ΠΠΎΠ³Π΄Π° Π½Π° ΠΎΠ΄Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ²ΡΠ·Π΅ΠΉ, ΠΈΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΡ
Π΅ΠΌΡ, Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
`$name` ΠΈ `$one` ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ²ΡΠ·ΠΈ.
~~~ php
$schema->addOneToMany('Books', null, null, 'MyBooks', 'MyBook')
ΠΠ±ΡΠ΅ΠΊΡ Author Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ:, (*39)
~~~ php
/** @return Collection|\Book[] */
public function getMyBooks($reload = false), (*40)
/** @return static */
public function setMyBooks($my_books_arr = null), (*41)
/** @return Collection|\Book[] */
protected function findMyBooks(), (*42)
### ΠΠ½ΠΎΠ³ΠΈΠ΅-ΠΊ-ΠΌΠ½ΠΎΠ³ΠΈΠΌ
~~~ php
addManyToMany($schema, $join_table = null, $foreign_col = null, $my_col = null, $foreign_id = null, $my_id = null, $name = null, $one = null)
Π‘Π²ΡΠ·Ρ Π΄Π²ΡΡ
ΡΠ°Π±Π»ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΡΡΡ., (*43)
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: Π£ ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π²ΡΠΎΡΠΎΠ² (Author), Ρ Π°Π²ΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ½ΠΈΠ³ (Book).
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°Π±Π»ΠΈΡΡ AuthorBook, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΠΎΠ»Ρ book_id
ΠΈ author_id
, ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ²ΡΠ·Ρ Π°Π²ΡΠΎΡΠΎΠ² ΠΈ ΠΊΠ½ΠΈΠ³ ΡΠ΅ΡΠ΅Π· JOIN ΠΊ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅., (*44)
~~~ php
// Π‘Ρ
Π΅ΠΌΠ° AuthorBook
$schema->addOneToOne('Authors') // author_id
$schema->addOneToOne('Books') // book_id, (*45)
// Π ΡΡ
Π΅ΠΌΠ΅ Authors:
addManyToMany('Books', 'author_book', 'book_id', 'author_id', 'id', 'id'), (*46)
// Π ΡΡ
Π΅ΠΌΠ΅ Books:
addManyToMany('Authors', 'author_book', 'author_id', 'book_id', 'id', 'id'), (*47)
**ΠΠ±ΡΠ΅ΠΊΡ Author Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ:**
/** @return Collection|\Book[] */
public function getBooks($reload = false), (*48)
/** @return static */
public function addBook($book), (*49)
/** @return static */
public function removeBook($book), (*50)
/** @return static */
public function removeAllBooks(), (*51)
/** @param $book integer|\Book */
protected function getBookPK($book), (*52)
/** @return Collection|\Book[] */
protected function findBooks(), (*53)
## ΠΠΈΠ³ΡΠ°ΡΠΈΠΈ
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡ
Π΅ΠΌΡ ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΠ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ [ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ Phinx](https://phinx.org).
ΠΡΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΡ Π² Π±Π°Π·Π΅ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡΠ°Ρ ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π²ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ\ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² Π½Π΅ΠΉ.
**ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Books:**
~~~ php
class NewBooksTable extends AbstractMigration
{
public function up()
{
$tbl = $this->table('test_books', array('id' => 'id'));
$tbl->addColumn("name", "string", array ( 'length' => 255, 'null' => true,));
$tbl->addColumn("author_id", "integer", array ( 'length' => 11, 'signed' => true, 'null' => true,));
$tbl->addForeignKey("author_id", "test_authors", "id", array ( 'delete' => 'RESTRICT', 'update' => 'CASCADE',));
$tbl->save();
}
public function down()
{
$tbl = $this->table('test_books', array('id' => 'id'));
$tbl->drop();
}
}
ΠΡΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° Π² Π±Π°Π·Π΅ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π² ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΡ
ΡΡ Π² ΡΡ
Π΅ΠΌΠ΅ ΠΈ ΠΠ,
Π΄Π»Ρ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½Π΅Π΅ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π² ΠΠ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ changeColumn
., (*54)
ΠΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ Pages:, (*55)
~~~ php
class MyMigration extends AbstractMigration
{
public function up()
{
$tbl = $this->table('test_pages', array('id' => 'id'));
$tbl->addColumn("is_active", "boolean", array ( 'default' => 0,));
$tbl->addColumn("price", "float", array ( 'precision' => 10, 'scale' => 2, 'signed' => false, 'default' => 0,));
$tbl->removeColumn("name");
$tbl->changeColumn("created_at", "timestamp", array ( 'default' => 'CURRENT_TIMESTAMP',));
if (!$tbl->hasForeignKey("parent_id")) {
$tbl->addForeignKey("parent_id", "test_pages", "id", array ());
}
$tbl->save();
}, (*56)
public function down()
{
$tbl = $this->table('test_pages', array('id' => 'id'));
$tbl->removeColumn("is_active");
$tbl->removeColumn("price");
// TODO: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠ° name
$tbl->save();
}
}
~~~, (*57)
ΠΠ°ΠΆΠ½ΠΎ! Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ½ΠΎΠ²ΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈ ΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ
ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ΅ Π½Π°ΠΊΠ°ΡΡΠ²Π°ΠΉΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π²ΡΠ»Π΅ΠΏΡΡ!, (*58)