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');        
    }
  • 相关阅读:
    jquery更改输入框type为密码框password
    用table做网页,设置了border为1px怎么还是觉得很粗?
    键盘按钮keyCode大全
    兼容firefox的 keyCode
    php生成随机字符串和验证码的类
    asp.net多图片上传实现程序代码
    asp.net图片上传实例
    纯js分页代码(简洁实用)
    jQuery中读取json文件示例代码
    perl编程中的map函数示例
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4209662.html
Copyright © 2011-2022 走看看