1、SELECT * FROM `bota_language` WHERE `type` = 'order_type';

id  key     value      type       
------  ------  ---------  ------------
   446  1       原单         order_type 
   447  2       改签单        order_type 
   448  3       退票单        order_type 
   449  6       退款单        order_type

2、SELECT `type`, GROUP_CONCAT(CONCAT_WS('->',`key`,`value`) ORDER BY `key` ASC SEPARATOR '||') FROM bota_language GROUP BY `type`;

order_type                1->原单||2->改签单||3->退票单||6->退款单                                                                                                                                                                                                                                                                                                                                                                                                                           
order_writeoff_status     1->审批中||2->已同意||3->已拒绝

3、ORM代码:

<?php defined('SYSPATH') OR die('No direct script access.');

class ORM extends Kohana_ORM {

    /**
* Model configuration, table names plural?
* @var bool
*/
protected $_table_names_plural = FALSE; /**
* Creates and returns a new model.
* Model name must be passed with its' original casing, e.g.
*
* $orm = ORM::factory('User_Token');
*
* @chainable
* @param string $orm Model name
* @param mixed $id Parameter for find()
* @return ORM
*/
public static function factory($orm, $id = NULL)
{
// Set class name
$orm = 'ORM_'.$orm; return new $orm($id);
} /**
* Updates or Creates the record depending on loaded()
*
* @author Kumchoy
* @since 20180712
* @final 20180712
*
* @chainable
* @param Validation $validation Validation object
* @return ORM
*/
public function save(Validation $validation = NULL)
{
try {
//keyword字段拼接
if (key_exists('keyword', $this->table_columns()) and
(!$this->get('keyword') or preg_match('/^(autokw||)/', $this->get('keyword')))) {
$comment = Arr::path($this->table_columns(), 'keyword.comment');
$cols = explode('||', preg_replace('/^(.*,)/', '', $comment));
$database = Kohana::$config->load('database.' . Database::$default . '.connection.database');
$keyword = DB::select(DB::expr("CONCAT(
'CONCAT(\'autokw||\',',
REPLACE(
GROUP_CONCAT(
CONCAT('IFNULL(`',column_name,'`,\'\')') ORDER BY column_name SEPARATOR '||'
)
,'||',',\'||\',')
,')') AS keyword"))
->from(DB::expr('information_schema.columns'))
->where('table_schema', '=', $database)
->where('table_name', '=', $this->_db->table_prefix() . $this->table_name())
->where('column_name', 'in', $cols)
->cached(null)
->execute()
->get('keyword');
if ($keyword) {
$this->set('keyword', DB::expr("{$keyword}"));
}
}
} catch (Exception $e) {
}
parent::save($validation); if (isset($keyword)) {
$_saved = $this->saved();
$this->reload();
$this->_loaded = $this->_saved = $_saved;
} return $this;
} protected $_previous_values = NULL;//cache previous values
public function create(Validation $validation = NULL)
{
$this->_previous_values = $this->_original_values;
return parent::create($validation);
}
public function update(Validation $validation = NULL)
{
$this->_previous_values = $this->_original_values;
return parent::update($validation);
}
public function delete()
{
$this->_previous_values = $this->_original_values;
return parent::delete();
}
public function previous_values()
{
return $this->_previous_values;
}
}

4、keyword字段内容如:

autokw||上海浦东新区赵高公路1269号4楼||13455454556||老完||上海||上海广园客房部||7811920||||[{"userid":"\u5165\u4f4f","username2":"","mobile":"13455555555","idtype":"","userno":"","username":"\u5165\u4f4f","usertype":0,"_usertype":"\u6210\u4eba"}]||1||||老完

5、soyoung项目注意事项

1、不能自拼sql操作数据库,select例外,但也建议用DB类组装sql执行;
2、insert,update,delete强制orm,原因orm save对keyword字段做了处理

kohana orm巧用字段备注支持扩展的更多相关文章

  1. ORM基础之字段及其参数介绍

    一.外键ForeignKey 1.字段参数 1.to 设置要关联的表 2.to_field 设置要关联的表的字段(一般不设置,默认使用主键id关联) 3.related_name 反向操作时,使用的字 ...

  2. Django中ORM介绍和字段及字段参数

    Object Relational Mapping(ORM) 1 ORM介绍 1.1 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对 ...

  3. Django ORM中常用字段和参数

    一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. ...

  4. django中的ORM介绍和字段及字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  5. Django --ORM常用的字段和参数 多对多创建形式

    1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型 ...

  6. Django中ORM介绍和字段及字段参数 Object Relational Mapping(ORM)

    Django中ORM介绍和字段及字段参数   Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简 ...

  7. Django中的ORM介绍,字段以及字段的参数。

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  8. Django ORM介绍 和字段及字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  9. Django中ORM介绍和字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

随机推荐

  1. python+selenium模拟鼠标操作

    from selenium.webdriver.common.action_chains import ActionChains #导入鼠标相关的包 ------------------------- ...

  2. java中的继承关系

    1.定义 java中的继承是单一的,一个子类只能拥有一个父类:java中所有类的父类是java.lang.Object,除了这个类之外,每个类只能有一个父类: 而一个父类可以有多个子类,可以被多个子类 ...

  3. windows上Appium安装和使用

    1.Appium安装相关依赖工具: Android Studio或者Android SDK:https://developer.android.com/studio/Appium Desktop: h ...

  4. oracle跟SQL Server 2005 的区别

    Oracle与Sql server的区别   一直搞不明白Oracle数据库和sql server的区别,今天我特意查资料把他们的区别整理出来 Oracle数据库:Oracle Database,又名 ...

  5. SI 和 MDK 添加Astyle功能

    一. 什么是Astyle 1. Astyle是一个用来对C/C++代码进行格式化的插件,可在多个环境中使用.该插件基于 Artistic Style 开发 二. 软件获取地址 1.下载地址:https ...

  6. 获取IP地址的几种方法

    根据ip获取地址的几种方法 1.调用新浪IP地址库 <script type="text/javascript" src="js/jquery.js"&g ...

  7. 码云与Git的使用

    码云注册和使用 网址:https://gitee.com 注册之后新建一个仓库 接下来安装Git 协同开发Git安装与使用 下载地址:https://gitforwindows.org 安装完成之后选 ...

  8. HNUSTOJ-1695 跳格子(略感头疼)

    1695: 跳格子 时间限制: 1 Sec  内存限制: 128 MB提交: 230  解决: 57[提交][状态][讨论版] 题目描述 逸夫楼的大厅的地面有10行10列的石砖,我们用坐标(x,y)来 ...

  9. Linux — 基础知识

    一 从认识操作系统开始 1.1 操作系统简介 我通过以下四点介绍什么操作系统: 操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石: 操作 ...

  10. 2019-8-31-MobaXterm-使用代理

    title author date CreateTime categories MobaXterm 使用代理 lindexi 2019-08-31 16:55:58 +0800 2018-02-13 ...