日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema

發(fā)布時間:2024/1/1 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

任何系統(tǒng)的操作無非都是對數(shù)據(jù)庫的各種操作的結(jié)合,而對于ecstore的數(shù)據(jù)庫操作可能與其他常見項目有些不太一樣。可能有新入手的朋友會嘗試在數(shù)據(jù)庫中直接創(chuàng)建表,可是發(fā)現(xiàn)創(chuàng)建之后不能使用,那是因為ecstore的緩存機制的原因。ecstore的數(shù)據(jù)庫表不是常規(guī)那種直接在數(shù)據(jù)庫中操作增刪表的,而是通過定義dbschema目錄下的數(shù)據(jù)表文件進行定義。

官方目錄結(jié)構(gòu)對dbschema目錄的解釋是:app/{$app_name}/dbschema //{$app_name}是數(shù)據(jù)庫表定義文件

通過文檔可以理解,在ecos安裝時,會掃描相關(guān)app中的dbschema中的文件,用這個文件生成相應(yīng)的表結(jié)構(gòu)并創(chuàng)建,同時也用來定義desktop app的列表項,即finder列表及操作項。

通常情況下數(shù)據(jù)庫的一個表會對應(yīng)一個dbschema定義文件(數(shù)據(jù)庫表定義文件)和一個model.數(shù)據(jù)庫表名采用下劃線命名法, 并且只允許小寫字母

dbschema約定:

表名: {$db_prefix}{$app_name}_{$filename}

數(shù)據(jù)庫表名前綴: {$db_prefix} 系統(tǒng)默認為sdb_, 定義在config/config.php里, DB_PREFIX

文件名: $filename.php

存放目錄名: app/{$app_name}/dbschema

完整文件名: app/{$app_name}/dbschema/{$filename}.php

對應(yīng)的model類名: {$app_name}_mdl_{$filename}

所屬app: {$app_name}

dbschema文件內(nèi)容返回的是一個數(shù)組形式,每個鍵值都有不同的定義,下面給出一個簡單的例子加以說明.$db['members']=array (

'columns' => array(

'ruesin_id' => //鍵值即是字段名稱

array (

'type' => 'int(8)', // 字段類型

'pkey' => true, // 是否是主鍵 默認為false

'required' => true, // 不能為空 默認為false

'extra' => 'auto_increment', // 擴展值//自增//如果要用一般只使用這個即可

'comment' => app::get('b2c')->_('用戶名'),//注釋

'sdfpath' => 'pam_account/account_id', //保存數(shù)據(jù)時的數(shù)組格式

'label' => app::get('b2c')->_('用戶名'), //顯示的名稱

'width' => 110, //本列的初始寬度

'searchtype' => 'has', //搜索的類型//詳細可參考數(shù)據(jù)查詢過濾器_filter

'filtertype' => 'normal', //高級篩選的過濾類型//設(shè)置為normal按type的來生成過濾

'filterdefault' => 'true', //默認在高級篩選中顯示

'order' => 20, //在列表中的權(quán)重//越小越靠前

'in_list' => true, //是否顯示在列表項中

'default_in_list' => true, //默認顯示在列表項中

'is_title'=>true,

),

'member_lv_id' =>array(

'type' => 'table:member_lv@b2c', //關(guān)聯(lián)b2c app下member_lv表中的主鍵類型

'default' => 0, // 默認值

'required' => true,

'editable' => false,

),

'status' =>array(

'default' => 'programmer',

'type' => array ( // 生成枚舉類型

'programmer' => app::get('b2c')->_('程序員'),

'literature' => app::get('b2c')->_('文藝青年'),

),

'label' => app::get('b2c')->_('身份'),

'width' => 100,

'in_list' => true,

'default_in_list' => true,

)

),

'version' => '$Rev: 44008 $' , //版本號

'engine' => 'innodb' , //mysql引擎

'comment' => app::get('b2c')->_('Ruesin的數(shù)據(jù)表'), //表描述

);

一、字段類型

系統(tǒng)中定義的字段類型有很多,詳細可查詢官方文檔,這里只列出了一些比較特別的.并稍作介紹.

1.關(guān)聯(lián)主鍵表'type' => 'table:member_lv@b2c',

//關(guān)聯(lián)b2c應(yīng)用下member_lv表中的主鍵類型

//如果在同一app下,可省略@appname

2.枚舉類型'type' => array (

'programmer' => app::get('b2c')->_('程序員'),

'literature' => app::get('b2c')->_('文藝青年'),

),

// 生成枚舉類型 enum('programmer','literature')

// 高級搜索將產(chǎn)生一個select選項可以進行選擇

// 在后臺finder列表中,會根據(jù)查詢出來的值顯示出枚舉出的數(shù)據(jù)

3.email類型

//存在數(shù)據(jù)庫中的類型是varchar(255),雖然可以直接寫成mysql類型,但在這里寫了email類型后,使用dbeav的save時會驗證是否是email類型的數(shù)據(jù) 如果不是將拋出異常.

(跟money類型異曲同工,其實有很多類型由于在程序中我們都有驗證,所以可以直接寫成mysql類型的)

二、后臺finder列表

1.searchtype

列表頁中簡單搜索的處理方式,如果dbschema中存在searchtype則會在desktop列表上顯示相關(guān)的簡單搜索,而searchtype的類型使用的是dbeav中的過濾器_filter類型'than'=>' > '.$var,

'lthan'=>' < '.$var,

'nequal'=>' = \''.$var.'\'',

'noequal'=>' <> \''.$var.'\'',

'tequal'=>' = \''.$var.'\'',

'sthan'=>' <=>= '.$var,'has'=>' like \'%'.$var.'%\'','head'=>' like \''.$var.'%\'','foot'=>' like \'%'.$var.'\'','nohas'=>' not like \'%'.$var.'%\'','between'=>' {field}>='.$var[0].' and '.' {field}" in ('".implode("','",(array)$var)."') ",

三、sdfpath

剛開始看到sdfpath時感覺有點***,也不知道是哪位高人前輩命名的~~平時自己做的app也很少用到,所以也沒做過多注意.

后來二開order時,又看到這個,感覺好二~~~ 于是有看了下dbschema里后理解了,說下自己的見解,也給大家起點拋磚引玉的作用.'name' =>

array(

'type' => 'varchar(20)',

),

'email' =>

array(

'type' => 'email',

'sdfpath' => 'connect/email',

),

保存的時候,POST的數(shù)組是:$_POST=array(

'name'=>'Ruesin',

'connect'=>array(

'email'=>'ruesin@163.com',

)

);

至此,數(shù)據(jù)表定義文件dbschema已經(jīng)大體給介紹完了,雖然有很多詳細細節(jié)沒有講解,但是結(jié)合官方文檔查看即可,而本文的介紹的很多是官方文檔沒有明確介紹的部分,大家可以拿此文和官方文檔一起學(xué)習(xí)。

創(chuàng)建好dbschema文件后,記得cmd update一下哦,不然是無法更新出數(shù)據(jù)表的。

總結(jié)

以上是生活随笔為你收集整理的ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。