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');        
    }
  • 相关阅读:
    jdbc连接数据库
    UUID
    Oracle 查询
    JAVA开发工具eclipse中@author怎么改
    JAVA实现多线程入门
    JAVA编程中的类和对象
    为ubuntu操作系统增加root用户
    搭建Java环境JDK,和运行环境JRE
    安装Ubuntu14.04版本的操作系统
    Eclipse连接到My sql数据库之前操作
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4209662.html
Copyright © 2011-2022 走看看