• [MODx] 7. MIGX DB


    MODx provides a really unfriendly way to work with xPDO class. What I means is you need to define XML schma, mysql table and run the script to generate other stuff (model and controller), which is really suck...

    Luckly, MIGX DB could help you finish those task easily.

    1. Install MIGX package.

    2. On the topp menu, find "Extras" => "MIGX".

    3. Enter into the MIGX Management, fill in the package and prefix information:

    Then click "Create Package" button.

    4. Go to "XML Schema" tab, define the schea here. 

    <?xml version="1.0" encoding="UTF-8"?>
    <model package="storefinder" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="storefinder" phpdoc-subpackage="model" version="1.1">
      <object class="sfStore" table="sfinder_stores" extends="xPDOSimpleObject">
        <field key="name" dbtype="varchar" precision="100" phptype="string" null="false" default="" index="index" />
        <field key="address" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
        <field key="city" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
        <field key="state" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
        <field key="zip" dbtype="varchar" precision="10" phptype="string" null="false" default="0" index="index" />
        <field key="country" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
        <field key="phone" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
        <field key="fax" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
        <field key="active" dbtype="int" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
        <alias key="postalcode" field="zip" />
        <index alias="name" name="name" primary="false" unique="false" type="BTREE">
            <column key="name" length="" collation="A" null="false" />
        </index>
        <index alias="zip" name="zip" primary="false" unique="false" type="BTREE">
            <column key="zip" length="" collation="A" null="false" />
        </index>
      </object>
      <object class="sfOwner" table="sfinder_owners" extends="xPDOSimpleObject">
        <field key="name" dbtype="varchar" precision="100" phptype="string" null="false" default="" index="index" />
        <field key="email" dbtype="varchar" precision="255" phptype="string" null="false" default="" />
        <index alias="name" name="name" primary="false" unique="false" type="BTREE">
            <column key="name" length="" collation="A" null="false" />
        </index>
      </object>
      <object class="sfStoreOwner" table="sfinder_store_owners" extends="xPDOSimpleObject">
        <field key="store" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
        <field key="owner" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
        <index alias="store" name="store" primary="false" unique="false" type="BTREE">
            <column key="store" length="" collation="A" null="false" />
        </index>
        <index alias="owner" name="owner" primary="false" unique="false" type="BTREE">
            <column key="owner" length="" collation="A" null="false" />
        </index>
      </object>
    </model>

    I just copy the xml from here.

    5. Click "Save Schema". 

    6. Go to "Parse schema" tab to click "Parse schema" button, this will generate model and controller class.php.

    7. Go to Create Table tab, click "Create Table" button. This will create mysql table for your according to your xml.

    8. Just mock some dump data into the table and test it out. For example, we add two rows of data into modx_sfinder_stores table.

    create a snippet called "store".

    <?php
    $path = MODX_CORE_PATH . 'components/storefinder/';
    $result = $modx->addPackage('storefinder',$path .
        'model/','modx_');
    
    
    $storefinder = $modx->newObject('sfStore');
    $storefinder->set('name', "XOPO");
    $storefinder->set('address', "Somewhere in the world");
    $storefinder->set('city', "Helsinki");
    $storefinder->set('state', "north Karera");
    $storefinder->set('zip', "88888");
    $storefinder->set('country', "Finland");
    $storefinder->set('phone', "987654");
    $storefinder->set('fax', "0332");
    $storefinder->set('active', "0");
    $storefinder->save();

    9. Run the snippet should be able to add data into the database, then we can view the data.

    <?php
    $path = MODX_CORE_PATH . 'components/storefinder/';
    $result = $modx->addPackage('storefinder',$path .
        'model/','modx_');
    
    $result= $modx->getCollection('sfStore');
    $stores = array();
    
    foreach($result as $res){
    
       echo $res->get('name');
       echo $res->get('address');        
    }
  • 相关阅读:
    【LeetCode】204
    【LeetCode】231
    【LeetCode】58
    解决error104 socket error问题
    爬虫问题
    80端口被system占用的问题
    Linux命令行下批量重命名文件名为数字索引编号(0~N.xxx)的方法
    [转]利用excel进行线性规划求解
    python——时间与时间戳之间的转换
    最全中文停用词表整理(1893个)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4209662.html
Copyright © 2020-2023  润新知