2

How to Use defineAttributes To Specify NOT NULL and DEFAULT '1' in MySQL Record

I am porting a plugin from another framework and it has the following MySql tables structure. Is there an easy way to create the same table structure within craft plugin?

CREATE TABLE IF NOT EXISTS `exp_shortcut_shortcuts` (
`shortcut_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`site_id` smallint(3) unsigned NOT NULL default '1',
`entry_id` smallint(3) unsigned NOT NULL default '0',
`field_id` smallint(3) unsigned NOT NULL default '0',
`autogenerated` char(1) NOT NULL default 'y',
`shortcut` varchar(100) NOT NULL default '',
`full_url_model` varchar(255) NOT NULL default '',
`full_url` varchar(255) NOT NULL default '',
`entry_date` int(11) unsigned NOT NULL default '0',
`edit_date` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`shortcut_id`),
INDEX (`shortcut`)
) ;;

namespace Craft;

class ShortcutRecord extends BaseRecord
{
    public function getTableName()
    {
        return 'shortcut_shortcuts';
    }

    public function primaryKey()
    {
       return 'shortcut_id';
    }

    protected function defineAttributes()
    {
        return array(
            'shortcut_id' => array(AttributeType::Number, 'column' => ColumnType::PK),
            'site_id' => array(AttributeType::Number, 'column' => ColumnType::TinyInt),

I see how to add TinyInt. How do I specify NOT NULL and default '1'?

3

For NOT NULL use 'required' => true and to default to 1 use 'default' => 1.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.