• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

XF 2.0 Database query

abdfahim

Active member
#1
Is this object-oriented style a MySql syntax or XF-specific syntax?

SQL:
$table->addColumn('demo_portal_auto_feature', 'tinyint')->setDefault(0);
I usually use the Procedural style

SQL:
ALTER TABLE mytable ADD COLUMN demo_portal_auto_feature .......
If it is XF-specific, where can I find a reference of all supported methods? I want to perform below queries:

Code:
$db->query("ALTER TABLE `xf_user_field` CHANGE `display_group` `display_group` ENUM('personal','contact','preferences','myaddon_new_column')
                       CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'personal';");

$db->query("UPDATE xf_user_field SET display_group = 'myaddon_new_column' WHERE field_id IN ('myaddon_my_field')");
 

Mike

XenForo developer
Staff member
#2
That's part of the schema manager system. See XF\Db\SchemaManager and the namespace XF\Db\Schema. I'd strongly recommend using an IDE that can support autocomplete and inspections. You'll instantly be able to see what methods are available, for example.
 

abdfahim

Active member
#4
The codes in XF/Db are very much insightful and PhpStorm also is awesome (never used a PHP IDE before).

However, when I tried the following code, for some reason all the options of enum() gets converted to UPPERCASE
SQL:
public function installStep1()
{
        $this->schemaManager()->alterTable('xf_user_field', function(Alter $table)
        {
            $table->changeColumn('display_group', 'enum(\'personal\',\'contact\',\'preferences\',\'myaddon_new_column\')');
        });
}
Before:
1507462254934.png

After:
1507462480985.png