zoukankan      html  css  js  c++  java
  • [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');        
    }
  • 相关阅读:
    dnn重置Host密码
    fiddle 网址过滤
    生成下面的模块时,启用了优化或没有调试信息
    关闭web.config的继承
    jQuery最佳实践
    坐标高速插入,移动和查询算法
    索引缓存方面的一些测试数据
    转帖微軟将从 .NET 4 以后的版本弃用 System.Data.OracleClient
    算法系列计数排序
    一款免费生成流程图的插件
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4209662.html
Copyright © 2011-2022 走看看