日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema的特殊字段 | Suvan的随性笔记...

發布時間:2024/1/1 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema的特殊字段 | Suvan的随性笔记... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

官方目錄結構對dbschema目錄的解釋是:

app/{$app_name}/dbschema //{$app_name}是數據庫表定義文件

1

app/{$app_name}/dbschema//{$app_name}是數據庫表定義文件

通過文檔可以理解,在ecos安裝時,會掃描相關app中的dbschema中的文件,用這個文件生成相應的表結構并創建,同時也用來定義desktop app的列表項,即finder列表及操作項。

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

dbschema約定:

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

1

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

數據庫表名前綴:

{$db_prefix} 系統默認為sdb_, 定義在config/config.php里

DB_PREFIX

文件名: $filename.php

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

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

對應的model類名: {$app_name}_mdl_{$filename}

所屬app: {$app_name}

1

2

3

4

5

6

7

8

9

文件名:$filename.php

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

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

對應的model類名:{$app_name}_mdl_{$filename}

所屬app:{$app_name}

dbschema文件內容返回的是一個數組形式,每個鍵值都有不同的定義,簡單的例子如下:

$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', //保存數據時的數組格式

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

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

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

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

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

'order' => 20, //在列表中的權重//越小越靠前

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

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

'is_title'=>true,

),

'member_lv_id' =>array(

'type' => 'table:member_lv@b2c', //關聯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的數據表'), //表描述

);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

$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',//保存數據時的數組格式

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

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

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

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

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

'order'=>20,//在列表中的權重//越小越靠前

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

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

'is_title'=>true,

),

'member_lv_id'=>array(

'type'=>'table:member_lv@b2c',//關聯b2capp下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的數據表'),//表描述

);

一、字段類型

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

1.關聯主鍵表

'type' => 'table:member_lv@b2c',

//關聯b2c應用下member_lv表中的主鍵類型

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

1

2

3

'type'=>'table:member_lv@b2c',

//關聯b2c應用下member_lv表中的主鍵類型

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

2.枚舉類型

'type' => array (

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

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

),

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

// 高級搜索將產生一個select選項可以進行選擇

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

1

2

3

4

5

6

7

'type'=>array(

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

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

),

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

//高級搜索將產生一個select選項可以進行選擇

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

3.email類型

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

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

二、后臺finder列表

1.searchtype

列表頁中簡單搜索的處理方式,如果dbschema中存在searchtype則會在desktop列表上顯示相關的簡單搜索,而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)."') ",

1

2

3

4

5

6

'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時感覺有點懵逼,也不知道是哪位高人前輩命名的~~平時定義表結構,不寫sdfpath也沒什么問題,后來見得多了,于是有看了下dbschema里后理解了,說下自己的見解。

'name' =>

array(

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

),

'email' =>

array(

'type' => 'email',

'sdfpath' => 'connect/email',

),

1

2

3

4

5

6

7

8

9

'name'=>

array(

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

),

'email'=>

array(

'type'=>'email',

'sdfpath'=>'connect/email',

),

保存的時候,POST的數組是:

$_POST=array(

'name'=>'Ruesin',

'connect'=>array(

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

)

);

1

2

3

4

5

6

$_POST=array(

'name'=>'Ruesin',

'connect'=>array(

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

)

);

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

創建好dbschema文件后,記得cmd update一下哦,不然是無法更新出數據表的。

總結

以上是生活随笔為你收集整理的ecstore mysql_详解Ecstore中的数据表结构定义文件dbschema的特殊字段 | Suvan的随性笔记...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。