`

Fleaphp函数用法举例

    博客分类:
  • php
阅读更多

最近用了一下Fleaphp,也是菜鸟一小只,反正我看fleaphp的API看的时候有时是懵懵懂懂,关键问题所在没有例子,所以在学习的同时把常用的和不长用的函数做了一下整理,这里包括在论坛上一些正确的答案,并加入了一些例子,方便一下想学fleaphp而又苦于看API的时候没有例子看的朋友,鄙人也是小菜鸟,写的不好,有些过于简单,所以请大虾闪过,鄙人是看到哪里写到哪里,跳跃性比较大,有点乱,所以请大家不要惊慌,本人的思维是没有问题的,请大家放心阅读,如果想查看哪些函数,请在本WEB页用ctrl+F查找,
今天写了20个函数,所以先发20,有时间再写再发,如果有些朋友想了解函数,又不愿意自己测试,请写发贴上来,鄙人有时间为大家效劳,献丑了
1。FLEA_Db_TableDataGateway::update ()用法:
例如:修改一条 uid=22 的记录, name字段改成"11", pass字段改成"22",就要这样写:
$data = array('uid'=>22,'name'=>11,'pass'=>22);
$table->update($data);

2。FLEA_Db_TableDataGateway::updateByConditions()用法:
例如:更新所有 level_ix = 3 的记录,并且把这些记录的特定字段(由 $row 确定)都更新为指定的值。
$row = array(
   字段 => 字段值
   字段 => 字段值
   字段 => 字段值
   字段 => 字段值
);

$conditions = array('level_ix' => 3);
$table->updateByConditions($conditions, $row);

3。FLEA_Db_TableDataGateway::updateField()用途:更新记录的指定字段,返回更新的记录总数
例如:以查找满足$conditions的条件,修改其中字段为class_id的值为$targetId.
$sourceId = $_POST['source']; 
$targetId = $_POST['target']; 
$conditions = array('class_id' => $sourceId);
$table->updateField($conditions,'class_id',$targetId);

4。FLEA_Db_TableDataGateway::updateRowset ()用途:更新记录集(多行记录)
用法和update ()类似,只不过是修改多条记录:
例如:$data =array(array('id'=>'2','name'=>'111','job'=>'111'),array('id'=>'3','name'=>'222','job'=>'222'));
          $arr=$this->_test->updateRowset($data);想必大家能看明白吧呵呵。。。
一定注意:$data 一定要是二维的,即使用updateRowset ()修改一条记录也要这样写:
          $data=array(array('id'=>'2','name'=>'111','job'=>'111'));
说得清不清楚啊?呵呵

5。FLEA_Db_TableDataGateway::create ()用途:插入一条新记录,返回新记录的主键值
例如:$data = array(array('uid'=>22,'name'=>11,'pass'=>22),array('uid'=>23,'name'=>12,'pass'=>23));
           $table->create($data);

6.FLEA_Db_TableDataGateway::createRowset()插入多行记录,返回包含所有新记录主键值的数组
例如:$data = array(array('uid'=>22,'name'=>11,'pass'=>22),array('uid'=>23,'name'=>12,'pass'=>23));
           $table->createRowset($data);

7.FLEA_Db_TableDataGateway::remove () 删除一条记录,条件必须为主键
例如:remove(array("id"=>"2"));


8。FLEA_Db_TableDataGateway::removeByConditions ()看名知义,当然是删除符合条件的记录喽
正常情况下和remove()的条件可以通和,如果对有多个主键的表进行删除操作:
conditions = array(
   '主键1' => xxx,
   '主键2' => yyy,
   '主键3' => zzz,
)
$table->removeByConditions($conditions);
另注意一点:如果某个表有多个主键的话,那么它所对应的Model中的   $primaryKey 只能设置为一个最常用的主键,不能设置为一个数组

9。& FLEA_Db_TableDataGateway::findBySql ()用途:直接使用 sql 语句获取记录
例如: $arr=$this->_test->findBySql('SELECT * FROM newtable');

10。FLEA_Db_TableDataGateway::decrField ()用途:减小符合条件的记录的指定字段的值,返回更新的记录总数 (该操作不会引发任何事件,也不会处理关联数据)。
例如:$arr=$this->_test->decrField(array('id'=>'3'),'prize',$decr = 2);
注意:$decr默认值为1,数字2是本人自己改的,当然你也可以改为34568了,改几就减几,明白了吧。。。

11。FLEA_Rbac_UsersManager::updatePasswordById ()用途:直接更新密码
例如:把ID为1的密码设为00000
$arr=$this->_student->updatePasswordById ('1','000000');
注意:前提是数据库中一定要有叫做Password的字段;修改后的密码是加密的。

12。FLEA_Rbac_UsersManager::checkPassword ()用途:检查密码的明文和密文是否符合
例如: $user = $usersManager->findByUsername('andy');
   $usersManager->checkPassword('000000', $user[$usersManager->passwordField]))

13.FLEA_Rbac_UsersManager::encodePassword ()用途:将密码明文转换为密文
例如: $user = $this->_student->findByUsername('andy');
            $arr=$this->_student->encodePassword($user[$this->_student->passwordField]);
            $this->_student->updatePassword($user[username],$arr);
注意:前提是数据库中一定要有叫做Password的字段;

14.FLEA_Rbac_UsersManager::updatePasswordById ()用途:直接更新密码
     这个我不说了啊,我想聪明的你一看例11就会明白了

15。FLEA_Db_TableDataGateway::updateByConditions ()用途:更新符合条件的记录,成功返回更新的记录总数
例如: $condition=array('id'=>2);
            $row=array('name'=>'nicholas');
         $this->_test->updateByConditions($condition,$row);


16.FLEA_Db_TableDataGateway::updateField () 用途:更新记录的指定字段,返回更新的记录总数 该操作不会引发任何事件,也不会处理关联数据。
例如:修改id为2的记录,把字段为name的值修改为vin就要这么写:
            $condition=array('id'=>2);
            $this->_test->updateField($condition,'name','vin');

17、FLEA_Db_TableDataGateway::incrField () 用途:增加符合条件的记录的指定字段的值,返回更新的记录总数
例如:这个也不说,去看例10吧,但要注意,例10是减,这个是加,嘿嘿。。。

18。FLEA_Db_TableDataGateway::replaceRowset () 用途:替换记录集(多行数据),返回记录集的主键字段值,失败返回 false
     $condition=array(array('id'=>2,'name'=>nicholas,'job'=>good));
     $this->_test->replaceRowset($condition);
注意:1,假设表中有id,name,job,prize等,如果在$condition中没写prize字段,会就默认插入空,原有的数据会被清除,如不注意,也许会丢失数据 2。$condition一定是二维的

19。FLEA_Db_TableDataGateway::removeAll ()用途:删除所有记录,用时要谨慎
例如:$this->_test->removeAll ();

20。FLEA_Db_TableDataGateway::removeAllWithLinks ()用途:删除所有记录及关联的数据
注意:这个更加要慎用,所有与这个表有关联的表数据都将被删除,何谓有关联,也就是说,此表中的某个字段可能是另外一个表中的外键,此谓之有关联。
例如:
在MODEL中一个叫做com的表关联了一个叫做student的表,com表中的uid是student表中的外键,那么我们就说这两个表关联起来了,是用下面的方法关联起来的
class Model_com extends FLEA_Db_TableDataGateway
{
    var $tableName = 'newtable';
    var $primaryKey = 'uid';
    var $hasOne=array('tableClass' => 'Model_student',
            'foreignKey' => 'uid',
            'mappingName'=>'jobs');
}
这时,我们执行下面的语句:
$this->_test =& FLEA::getSingleton('Model_com'); 
$this->_test->removeAllWithLinks();
大家想会发生什么后果?答对了,com表中的所有数据和student表中的所有数据都被删除了,注意是数据被删除了,表和字段还在。知道这个函数的邪恶了吧,所以请大家慎用。。。

21。FLEA_Db_TableDataGateway::removeByPkv (主键值) 参数是主键值,是几就写几,如:12,3等等。。。用途:根据主键值删除记录,首先删除关联表数据,再删除主表数据,简单的说,假如你把主表中ID为‘1’的一个条数据删除了,那么,与其关联的表中的那条ID为'1‘的条件也会被删除。
例如:$arr=$this->_test->removeByPkv (
'1');


22。FLEA_Db_TableDataGateway::removeByPkvs(主键值数组)用途:删除数组中所有主键值的记录
注意:参数是数组,而且不能像以往类似array(
'ID’=>'1')这样写成关联数组,要这样写:array(1,2,3)
例如: 
$conditions=array(123);
            
$arr=$this->_test->removeByPkvs($conditions);
这两条语句的意思就是删除表中主键为1,
2,3的记录。
发现一个问题:API上说:这条语句是删除数组中所有主键值的记录,该操作不会处理关联,但在实际测试的时候发现会影响关联表中的数据,关联表中的数据也一并被删除了,请大虾们解释一下,何故?


23。FLEA_Db_TableDataGateway::enableLink ()用途:启用指定关联
这个来自论坛廖老大答网友问,嘿嘿,当然要比鄙人解释的好,所以贴过来啦。。。
class Table_Posts extends FLEA_Db_TableDataGateway
{
    
.
   
..
// enableLink() 参数就是关联的 mappingName
$tablePosts->enableLink('comments');
..
    
var $hasMany = array(
        
array(
            
'tableClass' => 'Table_Comments',
            
'foreignKey' => 'post_id',
            
'mappingName' => 'comments',
            
..
            
'enabled' => false, // 这里是关键,表示默认禁用该关联
        )
    );
}上面的代码定义了一个关联,但是查询时该关联并不会启用。只有在确实需要查询关联数据时,使用 
..
// enableLink() 参数就是关联的 mappingName
$tablePosts->enableLink('comments');
..


24。FLEA_Db_TableDataGateway::enableLinks()用途:启用所有或多个关联
注意参数是个数组,这么写:
$this->_test->enbleLinks(array('jobs''teacherjob'));
这样就可以启用多个关联了,呵呵


25。disableLink ()用途:禁用指定关联
请大家参照例23,用法都是一样的,只是作用相反


26。disableLinks ()用途:禁用所有或多个关联
这个请大家参照例24,用法一样


27.FLEA_Db_TableDataGateway::clearLinks()用途:清除所有关联
例如:
$this->_test->clearLinks ();
          
$arr=$this->_test->findAll();
这时,与_test有关联的表中的数据就不会被显示出来了


28。FLEA_Db_TableDataGateway::relink ()用途:重建所有关联
给大家举个例子就全明白了:
                  
$this->_test->clearLinks ();
                  
$this->_test->relink ();
                  
$arr=$this->_test->findAll();
注意例28和例27的区别,多一句 
$this->_test->relink ();虽然前一句cldarLinks清除了所有关联,但是这句又把清除的关联又得新连接起来了,呵。。。
这回关联表中的数据又都显示出来了,嘿嘿,明白了吧


29.& FLEA_Db_TableDataGateway::getLink ()
测试出来结果了,但还是不明白他的作用是什么,我会在论坛上发贴寻问,弄明白再贴上


30.& FLEA_Db_TableDataGateway::getLinkTable ()
(同上)


31.& FLEA_Db_TableDataGateway::existsLink (paddingname) 用途:检查指定名字的关联是否存在
例如:
class Model_com extends FLEA_Db_TableDataGateway
{
    
var $tableName = 'newtable';
    
var $primaryKey = 'uid';
    
var $hasMany=array(
             
array('tableClass' => 'Model_student',
            
'foreignKey' => 'uid',
            
'mappingName'=>'jobs',
            
//'enabled' => false
            ),
          
            
array('tableClass' => 'Model_teacher',
            
'foreignKey' => 'uid',
            
'mappingName'=>'teacherjob',
            
//'enabled' => false
            )
            );
}
这是在MODEL中定义的,关联了两个表,paddingname分别是jobs
,teacherjob,大家看好,如果我在控制器中这么写:
$arr=$this->_test->existsLink ('teacherjob');
dump(
$arr);
就会在浏览器中输出
"1",
如果这么写
$arr=$this->_test->existsLink ('teacher');
dump(
$arr);
就会没有输出,看明白什么意思了吧,也就是说没有这个字段就不会有输出,有这个paddingname就会输出
"1"啦,呵。。。


32。FLEA_Db_TableDataGateway::createLink ()用途:建立关联,并且返回新建立的关联对象
这个不班门弄斧了,这个是论坛上的,一看就明白:
$link = array(
    
'tableClass' => 'Table_Test',
    
'foreignKey' => 'test_id',
    
'mappingName' => 'test',
);

$table->createLink($link, HAS_MANY);


33.assembleRecursionRowset() 和 assembleRecursionRow()
例如:廖老大发的,啥也不说了,无条件接受吧,嘿嘿。。。
http
://www.fleaphp.org/bbs/viewthread.php?tid=1878&highlight=assembleRecursionRow

34& FLEA_Db_TableDataGateway::findByField ()
例如:例如findByField(
'sno''020497'),其实就是和find("sno='020497'")是一样的效果


35。url($ controllerName = null, $actionName = null, $params = null,$anchor = null,$ options = null) 用途:很大!
这部分选自API,有例子,很好:
构造 url 
构造 url 需要提供两个参数:控制器名称和控制器动作名。如果省略这两个参数或者其中一个。
则 url() 函数会使用应用程序设置中的确定的默认控制名称和默认控制器动作名。 
url() 会根据应用程序设置 urlMode 生成不同的 URL 地址: 
URL_STANDARD 
- 标准模式(默认),例如 index.php?url=Login&action=Reject&id=1 
URL_PATHINFO 
- PATHINFO 模式,例如 index.php/Login/Reject/id/1 
URL_REWRITE 
- URL 重写模式,例如 /Login/Reject/id/1 
生成的 url 地址,还要受下列应用程序设置的影响: 
controllerAccessor 
defaultController 
actionAccessor 
defaultAction 
urlMode 
urlLowerChar 
用法: 
$url = url('Login', 'checkUser'); // $url 现在为 ?controller=Login&action=checkUser 
$url = url('Login', 'checkUser', array('username' => 'dualface')); // $url 现在为 controller
分享到:
评论

相关推荐

    Fleaphp常见函数功能与用法示例

    在本文中,我们将深入探讨Fleaphp框架中的常见函数,这些函数对于理解和操作数据库至关重要。Fleaphp是一个PHP开发框架,它提供了一系列方便的数据操作接口,使得开发者能够更高效地处理数据。 1. `FLEA_Db_Table...

    fleaphp核心完整代码

    1. **路由系统**:Fleaphp的路由系统负责解析URL请求,并将其映射到相应的控制器和方法上。开发者可以通过定义规则来控制不同URL请求如何被处理,实现灵活的URL设计。 2. **控制器(Controller)**:控制器作为模型...

    fleaphp 框架实例以及详细使用方法说明

    在本文中,我们将深入探讨Fleaphp框架的核心特性,常见问题及解决方案,以及如何有效地使用这个框架进行项目开发。 1. **框架结构与配置** Fleaphp框架采用MVC(Model-View-Controller)设计模式,使得业务逻辑、...

    fleaphp中文手册详细版

    下面,我们将深入探讨Fleaphp框架的核心概念、特性以及如何使用它进行开发。 一、Fleaphp框架概述 Fleaphp基于MVC(Model-View-Controller)设计模式,这是一个广泛用于Web开发的架构模式,它将业务逻辑、数据处理...

    Fleaphp 常用方法.doc

    在FleaPHP开源应用程序开发框架中,有几个关键的系统方法,它们是开发高效Web应用的基础。下面我们将详细探讨这些方法: 1. **FLEA::initWebControls()**: 这个函数用于初始化WebControls,它返回一个`FLEA_...

    php框架fleaphp

    Fleaphp是一款针对中文开发环境设计的轻量级PHP框架,它在国内PHP开发者社区中享有较高的声誉。...通过深入了解其核心组件和使用方法,开发者可以高效地进行项目开发,同时享受到轻量级框架带来的便捷与效率。

    fleaphp1.7.1524

    3. **路由系统**:Fleaphp的路由机制允许开发者灵活地定义URL结构,将HTTP请求映射到相应的控制器和方法,增强了应用的可扩展性和可维护性。 4. **数据库支持**:Fleaphp通常支持多种数据库,如MySQL、SQLite等,...

    fleaphp框架

    FleaPHP框架是一款轻量级的PHP开发框架,旨在提高开发效率并降低项目的维护成本。...如果你正准备使用FleaPHP进行开发,建议先熟悉其基本概念和核心组件,再结合官方文档和社区资源进行实践,以充分发挥框架的优势。

    Fleaphp框架使用规范收集.pdf

    Fleaphp框架使用PHP 5的__autoload魔术方法以及自身的FLEA::import()、FLEA::loadClass()和FLEA::loadFile()函数来实现自动加载功能,这使得开发者在调用类的时候不必手动包含文件,提高了开发效率。 7. 配置...

    fleaphp中文手册

    本手册将深入探讨FleaPHP框架的核心组件和使用方法,帮助您更好地理解和应用这个框架。 FleaPHP框架的核心特点包括: 1. **模块化设计**:FleaPHP采用模块化结构,允许开发者将应用分解为独立的模块,便于管理和...

    fleaphp手册

    fleaphp.chm手册

    fleaphp框架附实例(最新版)

    2. **路由系统**:Fleaphp的路由机制允许开发者灵活定义URL到控制器和方法的映射,支持参数传递,实现URL美化和更高效地处理HTTP请求。 3. **控制器(Controller)**:控制器是MVC模式中的关键组件,负责接收用户请求...

    FleaPHP+开发指南

    fleaphp框架,国产最好php开发框架

    fleaphp crud操作之findByField函数的使用方法

    标题所涉及的知识点是"Fleaphp CRUD操作之findByField函数的使用方法",这里首先要说明的是,Fleaphp是一个轻量级PHP框架,它提供了一系列简化数据库操作的工具和方法。CRUD代表的是创建(Create)、读取(Read)、更新...

    fleaphp crud操作之find函数的使用方法

    今天,我们要重点讲解的是fleaphp中CRUD操作中的find函数的使用方法。 find函数是CRUD操作中用于读取数据的函数之一,它用于查找并返回数据库中符合特定条件的第一条记录。与find函数相似的是findAll函数,但是find...

    FleaPHP的单入口文件详解

    FleaPHP可能使用依赖注入或服务容器来管理这些组件,确保它们按需创建和共享。 4. **路由处理**:根据解析后的URL和配置中的路由规则,FleaPHP会确定应执行的控制器和方法。路由可以是预定义的,也可以动态生成,以...

    FleaPHP分页方法讲解

    本文将深入讲解FleaPHP框架中的分页方法。 首先,我们需要理解分页的基本原理。分页是通过将大量数据分为多个部分(页)来展示的,每个页面只加载一部分数据,从而避免一次性加载所有数据导致的性能问题。在FleaPHP...

Global site tag (gtag.js) - Google Analytics