-
Notifications
You must be signed in to change notification settings - Fork 39
Db Row
Строка в таблице, некий недо-ActiveRecord
Для корректной работы требует соответствующий класс Table
namespace Application\Users;
/**
* @property integer $id
* @property string $login
* @property string $created
* @property string $updated
*/
class Row extends \Bluz\Db\Row
{
}
$userRow = new \Application\Users\Row();
$userRow -> login = 'username';
$userRow -> save();
Аннотация в блоке комментариев необходимы лишь для поддержки автодополнения в IDE
Данный функционал требует описание связей в соответствующей таблице, подробнее в статье Db-Relations
Для получения связанных записей следует использовать следующий код:
// query
$userRows = Users\Table::find(1, 2, 3);
// result
foreach($userRows as $userRow)
$groupRow = $userRow->getRelation('Groups');
В Row существуют следующие хуки:
-
afterRead()
- после получения данных из БД -
beforeSave()
- до сохранения записи посредствомinsert
илиupdate
-
afterSave()
- после -
beforeInsert()
- до сохранения записи посредствомinsert
и послеbeforeSave
-
afterInsert()
- после -
beforeUpdate()
- до сохранения записи посредствомupdate
и послеbeforeSave
-
afterUpdate()
- после -
beforeDelete()
- до удаления записи -
afterDelete()
- после
Пример использования хуков:
namespace Application\Users;
/**
* @property integer $id
* @property string $login
* @property string $created
* @property string $updated
*/
class Row extends \Bluz\Db\Row
{
public function beforeInsert()
{
$this->created = gmdate('Y-m-d H:i:s');
}
public function beforeUpdate()
{
$this->updated = gmdate('Y-m-d H:i:s');
}
}
с версии 0.4.3
Данные хуки так же следует использовать для проверки данных в Row, для этого достаточно генерировать исключение ValidatorException
.
Так же можно использовать trait Validator\Trait\Validator
, что упростит задачу по работе с ValidatorForm
:
namespace Application\Pages;
use Bluz\Validator\Traits\Validator;
class Row extends \Bluz\Db\Row
{
use Validator;
/**
* {@inheritdoc}
*
* @return void
*/
public function beforeSave()
{
// title validator
$this->addValidator('title')
->required()
;
// alias validator
$this->addValidator('alias')
->required()
->slug()
->callback(
function ($input) {
if ($row = $this->getTable()->findRowWhere(['alias' => $input])) {
if ($row->id != $this->id) {
return false;
}
}
return true;
},
'Alias already exists'
)
;
}
}
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View