声明:基于公司使用的 Kohana 框架写的,不确定是否适用于原生 Kohana

附:Kohana 3 中文手册,传送门:http://www.lampblog.net/kohana3%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C/

1)请求和响应

1.1)获取请求参数

获取$_GET 或 $_POST 之类的全局变量:

$this->response->get() 、$this->response->post();

数组变量获取和空处理:

Arr::get($this->request->post(), 'user_name', '');

Arr::get($this->request->get(), 'page', 1);

注:三个参数分别是:要处理的数组、变量key、为空时返回值


1.2)响应模版或json

显示模版:

$this->view('user_index');

1.2.1)输入变量到模版

$this->view('user_index')

  ->set('user_info', $user_info)

  ->set('order_status_nums', $order_status_nums);

1.2.2)公共头和脚

\modules\module\classes\template.php 类里 get_header_view 和 get_footer_view 分别处理公共头部和公共脚部

1.3)重定向跳转

$this->request->redirect($url);

2)session 和 cookie

2.1)使用 session

Session::instance()->set('user_id', $user_id);
Session::instance()->get('user_id');

2.2)使用 cookie

Cookie::instance()->set('user_id', $user_id);
Cookie::instance()->get('user_id');

3)数据库操作

3.1)增(DB::insert())

DB::insert(‘table_name’, array(‘column’))->values(array(‘column_value’))->execute();
如果命令成功,你就能得到一个包含 insert_id 和 total_rows (总共影响到的行数)组成的数组

3.2)删(DB::delete())

$total_rows = DB::delete(‘table_name’)->where(‘column’,’=’,’value’)->execute();
如果命令成功,你就能得到结果中影响到的行数

3.3)改(DB::update())

$total_rows = DB::update(‘table_name’)->set(array(‘column’=>’value’))->where(‘column’,’=’,’value’)->execute();
如果命令成功,你就能得到结果中影响到的行数

3.4)查(DB::select())

$result = DB::select()->from(‘table_name’)->where(‘column’,’=’,’value’)->execute()->as_array();

3.4.1)查询一行

$result = DB::select('column')->from('table_name')->execute()->current();

3.4.2)字段别名

$result = DB::select(array('longcolumnname1', 'col1'), array('longcolumnname2', 'aliascol2'))->from('table_name')->execute()->as_array();

3.5)使用原生 sql

$arr = DB::query ( Database::SELECT, $sql )->execute()->as_array();

query 方法的第一个参数是操作类型,可选值为:Database::SELECT、Database::INSERT、NULL

类型为select时返回结果集,类型为insert时返回insert_id,类型为null 或 其他值 时返回影响的行数

3.6)打印上一条查询的 sql

ORM 或 Model 可使用 last_query() 方法获取上一条查询语句

Database::instance()->last_query

3.7)sql 预处理

DB->select('col1','col2')->form('table_name')->where('user_id', '=', ':id')->param(':id', 1)->execute()->as_array();

3.8)排序与分页

$results = DB::select()->from('users')->order_by('id','desc')->limit($page_size)->offset($offset)->execute();

4)service 和 dao

service 和 dao 不是必用项,可以按息要求和习惯写或不写都可以,它们本质就是封闭了一些 DB 操作方法(函数)

公共service 和 dao 分别位于 /modules/module/classes/service/ 和 /modules/module/classes/dao/ 下,你也可以在本应用的 classes 下新建 service 和 dao 来覆盖公共的类(优先级比公共的高)


kohana 简单使用的更多相关文章

  1. Kohana 数据库

    只要不使用官方网站的教程,自己摸索出来的,有一个错误,当我们指了出来,哦,,好吧共同进步~ 首先配置:modules\database\config\database.php <?php 'de ...

  2. kohana task 编写计划任务

    kohana 框架  我们经常使用gleez作为我们二次开发. 收先我们要把文件建在Task文件夹下,比如新建文件为:testcron <?phpdefined('SYSPATH') or di ...

  3. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  6. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  7. 在Openfire上弄一个简单的推送系统

    推送系统 说是推送系统有点大,其实就是一个消息广播功能吧.作用其实也就是由服务端接收到消息然后推送到订阅的客户端. 思路 对于推送最关键的是服务端向客户端发送数据,客户端向服务端订阅自己想要的消息.这 ...

  8. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  9. 使用 Nodejs 搭建简单的Web服务器

    使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块. ...

随机推荐

  1. matlab中log函数与rssi转距离

    我们通常所说的log是指以10为底的对数,而MATLAB中的log却不是这样.Matlab中的log函数在默认情况下是以e为底,即loge,如果需要计算以10为底的对数,那么需要用log10()函数. ...

  2. Pandas 的轴向连接 concat

    在pandas里面,另一种数据何必运算也被称为连接(concatenation).绑定(binding)或堆叠(stacking). Numpy的轴向连接, concatenation Numpy有一 ...

  3. e870. 获取默认外观的数据

    This example demonstrates how to retrieve all the default values for the current look and feel. // G ...

  4. Castle.Windsor依赖注入的高级应用_Castle.Windsor.3.1.0

    [转]Castle.Windsor依赖注入的高级应用_Castle.Windsor.3.1.0 1. 使用代码方式进行组件注册[依赖服务类] using System; using System.Co ...

  5. com.panie 项目开发随笔_数据字典(2017.2.24)

    (一) 做一个网站,第一步需要考虑的是从哪个地方开始下手.首先,每一个功能肯定有最基本的增删改查功能,而此功能一般都分为两个页面. 1) 列表显示页面.用列表来展示数据库中的数据,多用于分页显示.该页 ...

  6. MySQL的varchar长度问题

    From: http://blog.csdn.net/longyulu/article/details/7863737 http://dinglin.iteye.com/blog/914276 htt ...

  7. Linux中的软链接与硬链接

    软链接相当于windows的快捷方式,当源文件不存在时,软链接失效. 链接是指向文件名,当指向的文件名字删除的时候,就找不到源文件了.硬链接是指向文件本身,删除一个文件名字,还是可以找到源文件的.ls ...

  8. Objc将数据写入iOS真机的plist文件里

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;) 怎样写入模拟器的博文在 这里 可是这对真机无论用,由于在真机环 ...

  9. Java编程思想学习笔记——初始化与清理(二)

    成员初始化 Java尽力保证:所有变量在使用前都能得到适当的初始化. 方法的局部变量:未初始化,编译错误. void f(){ int i; // System.out.println(i);//编译 ...

  10. Unity判断网络是否连接以及判断是否连接WiFi

    由于项目中的核心模块需要用到网络连接,所以需要首先检测用户是否有网络百度了下,有人说通过连接自己的服务器进行测试的,也有人说通过延迟来判断的最后发现原来Unity是提供了网络判断的方法的.Networ ...