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');        
    }
  • 相关阅读:
    Java线程的几种状态
    常用几种Java Web容器
    数据库触发器
    SQL优化及注意事项
    Oracle中rownum和rowid的区别
    数据库及SQL优化
    如何安装使用Impala
    Impala:新一代开源大数据分析引擎
    开源大数据查询分析引擎
    Google Dremel 原理
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4209662.html
Copyright © 2011-2022 走看看