kohana3.3 ORM

注意,这篇文章是针对kohana3.3的。因为在《Kohana.3.0.Beginners.Guide》这本书中,介绍的3.0版本的相应的操作方法,我实验是行不通的。

这篇文章假定你已经了解了kohana的目录结构。如果还不了解,请自行去官网查看。

假设我们使用mysql,并且有Test数据库,其拥有者的username为Test,其password为123456.我们要对其中的tests表进行操作。
注意其中的表名,起这个名字是有讲究的,需要遵循下面的约定:
1.     Make table names plural (i.e.: users).
2.     Make model's filename singular (i.e.: application/classes/model/user.php). #有点扯淡,请看下面的解释
3.     Make the model class name singular (i.e.: Model_User).
4.     Make the primary key name 'id', and set it to auto_increment.
5.      Make any pivot tables use alphabetical order (i.e.: roles_users).
其中第二条约定有点扯淡,因为kohana官方的对于model和controller的文件的约定是(https://kohanaframework.org/3.3/guide/kohana/conventions):
   Class names should have uppercase first letters with underscores to separate words. Underscores are significant as they directly reflect the file location in the filesystem.
而第二条约定明显违反了这个规则。而且,我按照第二条规则起的文件名,会提示找不到Model类!

下面是具体步骤:
        1.开启kohana的ORM模块:
            在application/bootstrap.php中,取消Kohana::modules中的ORM前面的注释取消掉。
        2.在application/config/下新建database.php文件,其中内容如下:
              <?php defined('SYSPATH') or die('No direct access allowed');
            return array(
                'default' => array(
                    //Notice:the value fo type is Case Sensitive.
                    //Don't use 'Mysql',because it will be deprecated.
                    'type' => 'MySQLi',
                    'connection' => array(
                        'hostname' => 'localhost',
                        'database' => 'Test',
                        'username' => 'Test',
                        'password' => '123456',
                        'persistent' => FALSE,
                    ),
                    'table_prefix' => '',
                    'charset' => 'utf8',
                    'caching' => FALSE,
                    'profiling' => TRUE,
                ),
            );
        3.新建tests表:
            create table tests(
                id int auto_increment primary key,
                name varchar(50) not null,
                content varchar(50) not null
            );
            insert into tests values('A','AA');
        4.在application/classes/Model/Test.php,内容如下:
            <?php defined('SYSPATH') or die('No direct script access');

            /*
             * Don't need any thing.
             *
             * */
            class Model_Test extends ORM{}
        5.在application/classes/Controller/TestORM.php,其内容如下:
            <?php

            class Controller_TestORM extends Controller{

                public function action_index(){

                    if ($this->request->param('opt') == 'insert'){
                        $test = ORM::factory('Test');
                        $test -> name = 'B';
                        $test -> content = 'BB';
                        $test -> save();

                        $value = ORM::factory('Test')->where('name','=','B')->find()->content;
                    } else if ($this->request->param('opt') == 'query') {
                        $test = ORM::factory('Test');
                        $value = $test->where('id','=',$this->request->param('id'))->find()->content;
                    }

                    $this->response->body($value);

                }

            }

            ?>

            代码很简单,一看就明白。如果其中有不明白的地方,请查看官方的API文档。
        6.为这个测试添加路由:
            在application/bootstrap.php中,Route::set('default', '(<controller>(/<action>(/<id>)))')之前,添加如下内容:
            Route::set('TestORM','orm/<opt>(/<id>)')
                ->defaults(array(
                    'controller' => 'testORM',
                    'action' => 'index',
                ));
        7.在URL中输入http://localhost/YourProjectName/orm/query/1应该就能查看到页面输出的AA

转于:http://www.bsdcn.com/ Kohana 中文手册[情人节专版] 本手册为 Kohana Docs v2.2 版本。 本手册制作日期:2009年02月10日 本手册由 icyleaf 制作 --- 参考 常规(General) Kohana 文件系统(Filesystem) - 汉化度 100% 配置(Configuration) - 汉化度 100% URLs - 汉化度 100% 路由(Routing) - 汉化度 99% 加载资源(Loading) - 汉化度 100% 控制器(Controllers) - 汉化度 100% 库(Libraries) - 汉化度 100% 辅助函数(Helpers) - 汉化度 100% 视图(Views) - 汉化度 100% 模型(Models) - 汉化度 100% 事件(Events) - 汉化度 85% 钩子(Hooks) - 汉化度 100% 错误处理(Error Handling) - 汉化度 100% 模块(Modules) - 汉化度 100% 国际化(i18n) - 汉化度 100% 日志(Logging) - 汉化度 100% 核心类(Core) 基准测试类(Benchmark Class) - 汉化度 100% 事件类(Event Class) - 汉化度 100% Kohana 类 - 汉化度 100% Unicode 类 - 汉化度 100% 视图库(View Class) - 汉化度 100% 核心库(Libraries) 缓存库(Cache Library) - 汉化度 100% 日历库(Calendar Library) - 汉化度 95% 验证库(Captcha Library) - 汉化度 99% 数据库库(Database Library) - 汉化度 40% 加密库(Encrypt Library) - 汉化度 100% 图像库(Image Library) - 汉化度 20% 输入库(Input Library) - 汉化度 0% ORM 库 - 汉化度 100% 分页库(Pagination Library) - 汉化度 99% 分析库(Profiler Library) - 汉化度 100% Session 库 - 汉化度 100% URI 库 - 汉化度 99% 校验库(Validation Library) - 汉化度 99% 辅助函数(Helpers) 数组辅助函数 - 汉化度 100% Cookie 辅助函数 - 汉化度 98% 日期辅助函数 - 汉化度 100% 下载辅助函数 - 汉化度 100% Email 辅助函数 - 汉化度 100% Expires Helper - 汉化度 0% Feed 辅助函数 - 汉化度 100% 文件辅助函数 - 汉化度 100% 表单辅助函数 - 汉化度 45% HTML 辅助函数 - 汉化度 100% Inflector Helper - 汉化度 0% 数字辅助函数 - 汉化度 100% 请求辅助函数 - 汉化度 80% 安全性辅助函数 - 汉化度 100% 文本辅助函数 - 汉化度 20% 上传辅助函数 - 汉化度 100% URL 辅助函数 - 汉化度 100% 校验辅助函数 - 汉化度 8% 附加模块(Addons) Archive 扩展 - 汉化度 99% Auth 扩展 - 汉化度 100% Gmaps 扩展 - 汉化度 100% Kodoc 扩展 - 汉化度 100% Payment 扩展 - 汉化度 99%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值