D方法在项目公共凼数文件 common.php中无法使用relation方法

浏览:541 发布日期:2016/08/04 分类:求助交流 关键字: D方法 relation方法 关联模型
准备工作,先上代码:
这是我在common.php文件中的函数:/**
 * 获取某个表的分页数据
 * $option键/值对数组的可用键值为
 * tablename  :欲查询的表名(必须)
 * where          :查询的where条件
 * relation        :关联模型的关联查询方法参数,RelationModel()->relation()
 * field             :   Model的field方法参数,欲查询的字段
 * order           :排序字段,Model()->order()方法参数
 * group          :  分组依据的字段,Model()->group();方法的参数
 * 示例:
 * $option['tablename']='user';
 * $option['where']='id=1';
 * getPageData($show,$data,$option);
 * 
 * @param &$show 用以保存page->show()方法返回的分页信息(传址方式)
 * @param &$data 用以保存查询到的数据(传址方式)
 */
function getPageData(&$show,&$data,$option = array())
{
  extract($option);
  $db=D($tablename);
  $count=0;
  import('ORG.Util.Page');
  if($where!=null){
    $count=$db->where($where)->count();
  }else{
    $count = $db->count();
  }
  $page = new Page($count , C('PAGING_COUNT'));
  $show = $page->show();
  if($relation!=null){
    $data = $db->relation($relation)->field($field)->group($group)->order($order)
    ->where($where)->limit($page->firstRow.','.$page->listRows)->select();
  }else{
    $data = $db->field($field)->group($group)->order($order)
    ->where($where)->limit($page->firstRow.','.$page->listRows)->select();
  }
}
这是Model文件<?php 
class DailyTasksModel extends RelationModel
{
    // 定义关联关系
    protected $_link = array (
            //任务状态
            'type' => array(
                    'mapping_type' => BELONGS_TO,
                    'class_name' => 'Tasktype',
                    'foreign_key' => 'TT_Id',
                    'mapping_fields' => 'TT_Id,TT_Name',
                    'mapping_name' => 'type',
                    'as_fields' => 'TT_Id,TT_Name', 
            ),
    );    
}

 ?>
问题来了,在我的DailyTasksAction.class.php控制器中可以这么使用D('Dailytasks')->relation(true)->select();。这句代码执行后可以正常返回数据。但是如果在DailyTasksAction.class.php控制器中这样调用:$option['tablename']='Dailytasks';
$option['relation']='type';
getPageData($page,$list,$option);
则会导致错误Model:relation您所请求的方法不存在!
而如果我在common.php文件前面添加RelationModel的引用
require('/ThinkPHP/Extend/Model/RelationModel.class.php');
则提示Cannot redeclare class RelationModel!!!
所以我就想问问是ThinkPHP的bug还是我自己哪里搞错了????
感谢大家的帮忙。(●'◡'●)

最佳答案
评论( 相关
后面还有条评论,点击查看>>