Класс табличной модели
Класс используется для создания модели пользовательской таблицы. Она нужна для того, чтобы для работы с ней были доступны методы xPDO.
load_model('Object', 'objects', function ($model) { /** @var modHelperModelBuilder $model */ $model->id('id')->pk(); // тип поля unsigned integer и указываем, что это первичный ключ. $model->varchar('name', 100)->setDefault('string')->rulePregMatch('invalid','/^[a-zA-Z\s]+$/','Нельзя использовать цифры в названии!'); $model->text('description')->null()->alias('desc'); $model->arr('properties')->null(); // array phptype $model->int('rid',true)->aggregate('Resource',array('class'=>'modResource','foreign'=>'id','cardinality'=>'one', 'owner'=>'foreign'))->index(); $model->int('createdby')->unsigned()->aggOneForeign('CreateUser','modUser','id')->index(); $model->int('createdby', true)->aggOneForeign('EditUser','modUser','id')->index(); $model->datetime('createdon'); // Если дата храниться в БД с типом datetime $model->bigint('editedon',true)->phpType('datetime');// Если дата храниться в базе в UNIX формате. });
char($name, $presision=255)
— добавляет поле типаchar
в модель.varchar($name, $presision=255)
— добавляет поле типаvarchar
в модель.text($name)
— добавляет поле типаtext
в модель.mediumText($name)
— добавляет поле типаmediumText
в модель.longText($name)
— добавляет поле типаlongText
в модель.id($name, $length=10)
— добавляет поле типаunsigned
integer в модель.int($name, $length=10, $unsigned=false)
— добавляет поле типаinteger
в модель. Третий аргумент может быть передан вместо второго.tinyInt($name, $length=3, $unsigned=false)
— добавляет поле типаtinyint
в модель. Третий аргумент может быть передан вместо второго.smallInt($name, $length=5, $unsigned=false)
— добавляет поле типаsmallint
в модель. Третий аргумент может быть передан вместо второго.mediumInt($name, $length=8, $unsigned=false)
— добавляет поле типаmediumint
в модель. Третий аргумент может быть передан вместо второго.bigInt($name, $length=20, $unsigned=false)
— добавляет поле типаbigint
в модель. Третий аргумент может быть передан вместо второго.float($name, $precision='12,2', $unsigned=false)
— добавляет поле типаfloat
в модель. Третий аргумент может быть передан вместо второго.decimal($name, $precision='12,2', $unsigned=false)
— добавляет поле типаfloat
в модель. Третий аргумент может быть передан вместо второго.double($name, $precision='20,2', $unsigned=false)
— добавляет поле типаfloat
в модель. Третий аргумент может быть передан вместо второго.bool($name)
— добавляет поле типаboolean
в модель.arr/asArray($name)
— добавляет поле типаarray
в модель.json($name)
— добавляет поле типаjson
в модель.date($name)
— добавляет поле типаdate
в модель.datetime($name)
— добавляет поле типаdatetime
в модель.timestamp($name)
— добавляет поле типаdatetime
в модель.time($name)
— добавляет поле типаtime
в модель.aggregate($alias, $attributes)
— добавляет связьaggregate
. $attributes — ассоциативный массив с ключами "class", "local", "foreign", "cardinality" и "owner".composite($alias, $attributes)
— добавляет связьcomposite
. $attributes — ассоциативный массив с ключами "class", "local", "foreign", "cardinality" и "owner".
Все методы возвращают объект поля модели, который описан ниже.
Класс полей модели
Этот класс содержит следующие методы:
phpType($type)
— устанавливаетphptype
поля. Может понадобится в некоторых случаях. Например, если вы храните дату в формате UNIX timestamp, т.е.dbtype
имеет тип "integer", но получать дату нужно в формате "datetime" или "timestamp".null()
— указывает, что колонка может иметь значениеNULL
.setDefault($value)
— указывает, что колонка имеет значение по-умолчанию.index($alias='')
— указывает, что поле является индексом. Если определить одинаковый$alias
для нескольких полей, то будет создан групповой индекс.pk()
— указывает, что поле является первичным ключем. Для составных первичных ключей нужно указать для каждого поля.fk($alias='')
— аналоничен методуindex
.unique($alias='')
— указывает, что поле является уникальным индексом.fulltext($alias='')
— указывает, что поле является полнотекствым индексом.alias($alias)
— устанавливает псевдоним для поля.rulePregMatch($name, $rule, $message)
— устанавливает правило для Regex валидации (документация).ruleXPDO($name, $rule, $message, $value = NULL)
— устанавливает правило для xPDOValidationRule валидации.ruleCallback($name, $rule, $message)
— устанавливает правило для callback валидации.aggregate($alias, $attributes)
— определяет связьaggregatee
для текущего поля. $attributes — ассоциативный массив с ключами "class", "foreign", "cardinality" и "owner". Можно использовать короткие варианты —aggregateManyForeign
/aggManyForeign($alias,$class,$foreign)
— добавляет связьaggregate
с уже определённымиcardinality="many" и owner="foreign"
.aggregateOneForeign
/aggOneForeign($alias,$class,$foreign)
— добавляет связьaggregate
с уже определённымиcardinality"one" и owner="foreign"
.aggregateManyLocal
/aggManyLocal($alias,$class,$foreign)
— добавляет связьaggregate
с уже определённымиcardinality="many" и owner="local"
.aggregateOneLocal
/aggOneLocal($alias,$class,$foreign)
— добавляет связьaggregate
с уже определёнными cardinality="one" и owner="local".
composite($alias, $attributes)
— определяет связьcomposite
для текущего поля. $attributes — ассоциативный массив с ключами "class", "foreign", "cardinality" и "owner". Можно использовать короткие варианты —compositeManyForeign
/comManyForeign($alias,$class,$foreign)
— добавляет связьcomposite
с уже определёнными cardinality="many" и owner="foreign".compositeOneForeign
/comOneForeign($alias,$class,$foreign)
— добавляет связьcomposite
с уже определённымиcardinality="one" и owner="foreign"
.compositeManyLocal
/comManyLocal($alias,$class,$foreign)
— добавляет связьcomposite
с уже определённымиcardinality="many" и owner="local"
.compositeOneLocal
/comOneLocal($alias,$class,$foreign)
— добавляет связьcomposite
с уже определённымиcardinality="one" и owner="local"
.